解决插入之后序号变化问题

This commit is contained in:
2020-05-12 13:44:38 +08:00
parent 8a0e6d5692
commit 3b170c60c2
2 changed files with 34 additions and 20 deletions
+19 -12
View File
@@ -428,28 +428,38 @@ void OPMapWidget::WPInsert(const int &position)
if(item_old1)//如果指定的点存在,那么就可以在这之前插入一个点
{
WayPointItem *item = WPCreate(latlng,item_old1->Altitude());
WayPointItem *item = new WayPointItem(latlng, item_old1->Altitude(), map);
ConnectWP(item);
item->SetNumber(position);
item->setParentItem(map);
setOverlayOpacity(overlayOpacity);
setSelectedWP(item);
item->emitWPProperty();//这个没有执行
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
if(w->Number()>position)
if(w != item)
{
w->SetNumber(w->Number() -1);
if(w->Number() >= item->Number())
{
w->SetNumber(w->Number()+1);
}
}
qDebug() << "renumber" << w->Number() << w->snumber;
}
}
WayPointItem *w_next = WPFind(item->Number() + 1);
if(w_next)
{
@@ -474,21 +484,18 @@ void OPMapWidget::WPInsert(const int &position)
}
}
}
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
qDebug() << "all number" << w->Number() << w->snumber;
}
}
}
void OPMapWidget::WPInsert(WayPointItem *item, const int &position)
{
item->SetNumber(position);
+15 -8
View File
@@ -377,7 +377,7 @@ void WayPointItem::SetNumber(const int &value)
}
this->update();
emit WPNumberChanged(oldnumber, value, this);
//emit WPNumberChanged(oldnumber, value, this);
}
void WayPointItem::SetReached(const bool &value)
{
@@ -456,14 +456,21 @@ void WayPointItem::onHomePositionChanged(internals::PointLatLng homepos, float h
void WayPointItem::WPRenumbered(const int &oldnumber, const int &newnumber, WayPointItem *waypoint)
{
if (waypoint != this) {
if (((oldnumber > property.seq) && (newnumber <= property.seq))) {
SetNumber(++property.seq);
} else if (((oldnumber < property.seq) && (newnumber > property.seq))) {
SetNumber(--property.seq);
} else if (newnumber == property.seq) {
SetNumber(++property.seq);
if (waypoint != this) {//如果wp不是当前点,说明需要重新排序
if (((oldnumber > property.seq) && (newnumber <= property.seq)))
{
int n = property.seq;
SetNumber(++n);
} else if (((oldnumber < property.seq) && (newnumber > property.seq)))
{
int n = property.seq;
SetNumber(--n);
} else if (newnumber == property.seq)
{
int n = property.seq;
SetNumber(++n);
}
qDebug() << "set property.seq" << property.seq;
}
}
int WayPointItem::type() const