From 4176bde46625ce5d789beb2ed034866c3a97a079 Mon Sep 17 00:00:00 2001 From: hm Date: Fri, 6 May 2022 17:53:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BB=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=88=AA=E7=82=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/MissionUI/MissionUI.cpp | 69 ++++++++++++++++---- App/MissionUI/MissionUI.h | 2 +- App/MissionUI/propertyui.cpp | 6 ++ App/MissionUI/propertyui.h | 1 + App/mainwindow.cpp | 6 ++ opmap/mapwidget/opmapwidget.cpp | 108 ++++++++++++++++++++------------ opmap/mapwidget/opmapwidget.h | 1 + 7 files changed, 142 insertions(+), 51 deletions(-) diff --git a/App/MissionUI/MissionUI.cpp b/App/MissionUI/MissionUI.cpp index 0c9f1b0..e504326 100644 --- a/App/MissionUI/MissionUI.cpp +++ b/App/MissionUI/MissionUI.cpp @@ -309,7 +309,9 @@ void MissionUI::on_tabWidget_currentChanged(int index) break; } - //emit groupChanged(group); + qDebug() << "currentChanged" << group; + + emit groupChanged(group); QTableWidget *widget = tablelist.value(group); int idx = widget->currentRow() + 1; @@ -356,8 +358,32 @@ void MissionUI::on_pushButton_insert_clicked() { emit WPInsert(); + int group = 3; + //根据tabwidget + int tab_idx =ui->tabWidget->currentIndex(); + + switch (tab_idx) { + case 0: + group = 1; + break; + case 1: + group = 3; + break; + case 2: + group = 4; + break; + case 3: + group = 5; + break; + case 4: + group = 6; + break; + default: + break; + } + //删除完成后,刷新一次所有航点 - emit getAllPoints(); + emit getAllPoints(group); } void MissionUI::on_pushButton_delete_clicked() @@ -393,7 +419,7 @@ void MissionUI::on_pushButton_delete_clicked() emit WPDelete(); //删除完成后,刷新一次所有航点 - emit getAllPoints(); + emit getAllPoints(tablelist.key(widget)); } @@ -401,8 +427,32 @@ void MissionUI::on_pushButton_add_clicked() { emit WPAdd(); - //删除完成后,刷新一次所有航点 - emit getAllPoints(); + int group = 3; + //根据tabwidget + int tab_idx =ui->tabWidget->currentIndex(); + + switch (tab_idx) { + case 0: + group = 1; + break; + case 1: + group = 3; + break; + case 2: + group = 4; + break; + case 3: + group = 5; + break; + case 4: + group = 6; + break; + default: + break; + } + + //刷新一次所有航点 + emit getAllPoints(group); } void MissionUI::on_pushButton_clean_clicked() @@ -431,14 +481,15 @@ void MissionUI::on_pushButton_clean_clicked() break; } - for (int i = 0;i < widget->rowCount();i++) { + int count = widget->rowCount(); + for (int i = 0;i < count;i++) { widget->removeRow(i); } emit WPDeleteAll(); //删除完成后,刷新一次所有航点 - emit getAllPoints(); + //emit getAllPoints(tablelist.key(widget)); } @@ -566,11 +617,7 @@ void MissionUI::itemDoubleClicked(QTableWidgetItem *item) { QLineEdit *line = new QLineEdit(widget); line->setStyleSheet("background-color: #FFFFFF;font :15px 黑体;"); - //line->setValidator(new QRegExpValidator(QRegExp("[0-9.-]+$"))); - - line->setText(itemValue.toString()); - widget->removeCellWidget(row,column); widget->setCellWidget(row,column,line); diff --git a/App/MissionUI/MissionUI.h b/App/MissionUI/MissionUI.h index eb0a72b..e463ff7 100644 --- a/App/MissionUI/MissionUI.h +++ b/App/MissionUI/MissionUI.h @@ -96,7 +96,7 @@ signals: void waypointSelect(int group,int idx); - void getAllPoints(void);//读取一下所有的航点 + void getAllPoints(int group);//读取一下所有的航点 private: Ui::MissionUI *ui; diff --git a/App/MissionUI/propertyui.cpp b/App/MissionUI/propertyui.cpp index 9a2fd90..0bc2565 100644 --- a/App/MissionUI/propertyui.cpp +++ b/App/MissionUI/propertyui.cpp @@ -164,6 +164,8 @@ propertyui::propertyui(QWidget *parent) : connect(this,&propertyui::settableGroup, table,&MissionUI::settableGroup); + connect(table,&MissionUI::getAllPoints, + this,&propertyui::getAllPoints); //初始化参数 @@ -2110,8 +2112,12 @@ void propertyui::on_pushButton_Delete_clicked() void propertyui::waypointSelect(int group,int idx) { + //读取这个值得航点 + //这个不够稳定 GroupChanged(group); + + //先换组,再切点 emit WPotherPoint(idx); } diff --git a/App/MissionUI/propertyui.h b/App/MissionUI/propertyui.h index 5252ff3..c02d48c 100644 --- a/App/MissionUI/propertyui.h +++ b/App/MissionUI/propertyui.h @@ -258,6 +258,7 @@ Q_SIGNALS: void settableGroup(int); + void getAllPoints(int group); private slots: diff --git a/App/mainwindow.cpp b/App/mainwindow.cpp index 283700b..88f5074 100644 --- a/App/mainwindow.cpp +++ b/App/mainwindow.cpp @@ -411,6 +411,12 @@ MainWindow::MainWindow(QWidget *parent) connect(missionUI,SIGNAL(searchall()), map,SLOT(WPsearchall())); + + connect(missionUI,SIGNAL(getAllPoints(int)), + map,SLOT(getAllPoints(int))); + + + //dlink ----- map connect(map,SIGNAL(signal_WPDownload(uint8_t,uint8_t,int)), dlink->mavlinknode->Mission,SLOT(ReadCmd(uint8_t,uint8_t,int)),Qt::DirectConnection); diff --git a/opmap/mapwidget/opmapwidget.cpp b/opmap/mapwidget/opmapwidget.cpp index 64af7fd..133658a 100644 --- a/opmap/mapwidget/opmapwidget.cpp +++ b/opmap/mapwidget/opmapwidget.cpp @@ -921,6 +921,7 @@ int OPMapWidget::getWaypointSize(int group) void OPMapWidget::WPInsert() { + bool isExist = false; //获取位置和组号 int position = 0; int group = 3; @@ -930,12 +931,23 @@ void OPMapWidget::WPInsert() if (w) { if (w->isSelected()) { - position = w->Number(); - group = w->MissionType(); + + if(currentGroup == w->MissionType()) + { + position = w->Number(); + group = w->MissionType(); + isExist = true; + break; + } } } } + if(isExist == false)//没有选中的点 + { + return; + } + //刷新全部连线,目前连线很乱 internals::PointLatLng latlng; @@ -1125,52 +1137,43 @@ void OPMapWidget::WPDelete(void) int number = 0; int group = 3; - foreach(QGraphicsItem * i, map->childItems()) { - WayPointItem *w = qgraphicsitem_cast(i); + foreach(QGraphicsItem * i, map->childItems()) { + WayPointItem *w = qgraphicsitem_cast(i); - if (w) { - if (w->isSelected()) { + if (w) { + if (w->isSelected()) { - number = w->Number(); - group = w->MissionType(); - emit WPDeleted(w->Number(), w);//这个会修改编号 - delete w; - } + number = w->Number(); + group = w->MissionType(); + emit WPDeleted(w->Number(), w);//这个会修改编号 + delete w; } } + } - //当前选中为上一点 - WayPointItem *item = WPFind(group,number -1); - if(item) - { - setSelectedWP(item); - item->emitWPProperty(); + //当前选中为上一点 + WayPointItem *item = WPFind(group,number -1); + if(item) + { + setSelectedWP(item); + item->emitWPProperty(); - WayPointItem *item_next = WPFind(group,number); - if (item_next) { - WPLineCreate(item,item_next,Qt::green,false,2); - } - - } - else - { - WayPointItem *ww = WPFind(group,number); - if(ww) - { - setSelectedWP(ww); - ww->emitWPProperty(); - } + WayPointItem *item_next = WPFind(group,number); + if (item_next) { + WPLineCreate(item,item_next,Qt::green,false,2); } -/* - foreach(QGraphicsItem * i, map->childItems()) { - WayPointItem *w = qgraphicsitem_cast(i); - if (w) { - WPFollowPrevious(w->FollowPrevious(),w); - } - } -*/ + } + else + { + WayPointItem *ww = WPFind(group,number); + if(ww) + { + setSelectedWP(ww); + ww->emitWPProperty(); + } + } } WayPointItem *OPMapWidget::WPFind(int group,int number) @@ -2532,5 +2535,32 @@ void OPMapWidget::find_PointNumber() emit PointNumber(nums); } +void OPMapWidget::getAllPoints(int group) +{ + QMap points; + points.clear(); + + + foreach(QGraphicsItem * i, map->childItems()) { + WayPointItem *w = qgraphicsitem_cast(i); + if (w) + { + if(w->MissionType() == group) + { + points.insert(w->Number(),w); + } + } + } + + QMapIterator iter(points); + while (iter.hasNext()) { + iter.next(); + WayPointItem *Item = iter.value(); + Item->emitWPProperty(); + } +} + + + } diff --git a/opmap/mapwidget/opmapwidget.h b/opmap/mapwidget/opmapwidget.h index fb8d1eb..c166344 100644 --- a/opmap/mapwidget/opmapwidget.h +++ b/opmap/mapwidget/opmapwidget.h @@ -634,6 +634,7 @@ signals: public slots: + void getAllPoints(int group); void groupchanged(int value);