diff --git a/Src/build.sh b/Src/build.sh old mode 100755 new mode 100644 diff --git a/Src/pages/dronedata.cpp b/Src/pages/dronedata.cpp old mode 100755 new mode 100644 diff --git a/Src/pages/dronedata.h b/Src/pages/dronedata.h old mode 100755 new mode 100644 diff --git a/Src/pages/dronemanagementpage.cpp b/Src/pages/dronemanagementpage.cpp old mode 100755 new mode 100644 diff --git a/Src/pages/dronemanagementpage.h b/Src/pages/dronemanagementpage.h old mode 100755 new mode 100644 diff --git a/Src/pages/mapbridge.cpp b/Src/pages/mapbridge.cpp index 1f5490e..c462d65 100644 --- a/Src/pages/mapbridge.cpp +++ b/Src/pages/mapbridge.cpp @@ -11,7 +11,6 @@ void MapBridge::onClick(double lng, double lat) emit mapClicked(lng, lat); } -void MapBridge::onMapReady() -{ - qDebug() << "Map is ready in C++"; +void MapBridge::onMapReady() { + emit mapReady(); } diff --git a/Src/pages/mapbridge.h b/Src/pages/mapbridge.h index bf93eae..401dd5f 100644 --- a/Src/pages/mapbridge.h +++ b/Src/pages/mapbridge.h @@ -11,10 +11,11 @@ public: signals: void mapClicked(double lng, double lat); + void mapReady(); public slots: Q_INVOKABLE void onClick(double lng, double lat); - Q_INVOKABLE void onMapReady(); + void onMapReady(); }; #endif // MAPBRIDGE_H diff --git a/Src/pages/mappage.cpp b/Src/pages/mappage.cpp index 5a04621..1d1d1c7 100644 --- a/Src/pages/mappage.cpp +++ b/Src/pages/mappage.cpp @@ -70,6 +70,7 @@ MapPage::MapPage(QWidget *parent) : QWidget(parent), if (page) { connect(page, &CustomWebEnginePage::consoleMessage, this, &MapPage::onConsoleMessage); } + connect(bridge_, &MapBridge::mapReady, this, &MapPage::onMapReadyFromJS); } MapPage::~MapPage() {} @@ -302,6 +303,10 @@ void MapPage::setupMapArea() { } }); }); + // 通知C++地图就绪 + if (window.bridge) { + window.bridge.onMapReady(); + } } @@ -363,6 +368,10 @@ QWidget* MapPage::createControlBarWidget() { connect(areaCoverageBtn_, &QPushButton::clicked, this, &MapPage::onAreaCoverageClicked); layout->addWidget(areaCoverageBtn_); + auto* loadPathBtn = new QPushButton("加载保存路径"); + connect(loadPathBtn, &QPushButton::clicked, this, &MapPage::loadSavedPath); + layout->addWidget(loadPathBtn); + return bar; } @@ -585,6 +594,98 @@ void MapPage::clearCoverageOverlays() { qDebug() << "区域覆盖覆盖物清除完成"; } +void MapPage::visualizeCoverageMultiPaths(const QString& multiPathsJson) { + // 多路径与覆盖圆可视化 + QString js = QString(R"( + if (window.map) { + var items = JSON.parse('%1'); + // 清理旧覆盖 + if (!window.multiPolylines) window.multiPolylines = []; + if (!window.multiCircles) window.multiCircles = []; + for (var i=0;i 0){ + var poly = new AMap.Polyline({path: path, strokeColor: pathCol, strokeOpacity: 0.9, strokeWeight: 4}); + poly.setMap(window.map); + window.multiPolylines.push(poly); + all.push(poly); + // 每隔若干点画覆盖圆 + for (var j=0;j0) window.map.setFitView(all, {padding:[40,40,40,40]}); + } + )").arg(multiPathsJson); + runMapJavaScript(js); +} + + +void MapPage::visualizeCoverageAreaCircle(double centerLng, double centerLat, double radiusKm) { + // 使用统一的 areaOverlayId_ 存放区域 overlay(Circle) + // km -> m + double radiusM = radiusKm * 1000.0; + QString js = QString(R"( + if (window.map) { + if (window.%1) { window.map.remove(window.%1); window.%1 = null; } + var circle = new AMap.Circle({ + center: new AMap.LngLat(%2, %3), + radius: %4, + fillColor: '#3F51B5', + fillOpacity: 0.15, + strokeColor: '#3F51B5', + strokeWeight: 2 + }); + circle.setMap(window.map); + window.%1 = circle; + window.map.setFitView([circle], {padding:[40,40,40,40]}); + } + )").arg(areaOverlayId_) + .arg(centerLng, 0, 'f', 6) + .arg(centerLat, 0, 'f', 6) + .arg(radiusM, 0, 'f', 3); + runMapJavaScript(js); +} + +void MapPage::visualizeCoverageAreaPolygon(const QList>& vertices) { + // 使用统一的 areaOverlayId_ 存放区域 overlay(Polygon) + QString path = "["; + for (int i = 0; i < vertices.size(); ++i) { + if (i > 0) path += ","; + path += QString("[%1,%2]").arg(vertices[i].first, 0, 'f', 6).arg(vertices[i].second, 0, 'f', 6); + } + path += "]"; + QString js = QString(R"( + if (window.map) { + if (window.%1) { window.map.remove(window.%1); window.%1 = null; } + var polygon = new AMap.Polygon({ + path: %2, + fillColor: '#3F51B5', + fillOpacity: 0.15, + strokeColor: '#3F51B5', + strokeWeight: 2 + }); + polygon.setMap(window.map); + window.%1 = polygon; + window.map.setFitView([polygon], {padding:[40,40,40,40]}); + } + )").arg(areaOverlayId_).arg(path); + runMapJavaScript(js); +} + double MapPage::parseLng(const QString& coord) const { // Handle both "[lng, lat]" and "lng, lat" @@ -676,69 +777,79 @@ void MapPage::removeClickListener() { } void MapPage::visualizePath(const QString& pathData) { - QString js = QString(R"( - if (window.map) { - var pathCoords = JSON.parse("%1"); - console.log('Visualizing path with ' + pathCoords.length + ' points'); - - // Remove existing path overlay if any - if (window.%2) { - window.map.remove(window.%2); - window.%2 = null; - } - - // Create new polyline - var polyline = new AMap.Polyline({ - path: pathCoords, - strokeColor: "#3366FF", - strokeOpacity: 1, - strokeWeight: 5, - strokeStyle: "solid", - strokeDasharray: [10, 5], - zIndex: 1 - }); - polyline.setMap(window.map); - window.%2 = polyline; - - // Clear existing intermediate markers - if (!window.intermediates) { - window.intermediates = []; - } - for (var i = 0; i < window.intermediates.length; i++) { - if (window.intermediates[i]) { - window.map.remove(window.intermediates[i]); + if (isMapReady_) { + // 直接执行JS + QString js = QString(R"( + if (window.map) { + var pathCoords = JSON.parse("%1"); + console.log('Visualizing path with ' + pathCoords.length + ' points'); + + // Remove existing path overlay if any + if (window.%2) { + window.map.remove(window.%2); + window.%2 = null; } - } - window.intermediates = []; - - // Add intermediate markers as small dots (excluding start and end) - for (var i = 1; i < pathCoords.length - 1; i++) { - var marker = new AMap.Marker({ - position: pathCoords[i], - content: '
', - zIndex: 10, - offset: new AMap.Pixel(-4, -4) + + // Create new polyline + var polyline = new AMap.Polyline({ + path: pathCoords, + strokeColor: "#3366FF", + strokeOpacity: 1, + strokeWeight: 5, + strokeStyle: "solid", + strokeDasharray: [10, 5], + zIndex: 1 }); - marker.setMap(window.map); - window.intermediates.push(marker); - } - - // Fit view to show all elements - var allOverlays = []; - if (window.startMarker) allOverlays.push(window.startMarker); - if (window.endMarker) allOverlays.push(window.endMarker); - allOverlays.push(polyline); - allOverlays = allOverlays.concat(window.intermediates); - - if (allOverlays.length > 0) { - window.map.setFitView(allOverlays, {padding: [50, 50, 50, 50]}); + polyline.setMap(window.map); + window.%2 = polyline; + + // Clear existing intermediate markers + if (!window.intermediates) { + window.intermediates = []; + } + for (var i = 0; i < window.intermediates.length; i++) { + if (window.intermediates[i]) { + window.map.remove(window.intermediates[i]); + } + } + window.intermediates = []; + + // Add intermediate markers as small dots (excluding start and end) + for (var i = 1; i < pathCoords.length - 1; i++) { + var marker = new AMap.Marker({ + position: pathCoords[i], + content: '
', + zIndex: 10, + offset: new AMap.Pixel(-4, -4) + }); + marker.setMap(window.map); + window.intermediates.push(marker); + } + + // Fit view to show all elements + var allOverlays = []; + if (window.startMarker) allOverlays.push(window.startMarker); + if (window.endMarker) allOverlays.push(window.endMarker); + allOverlays.push(polyline); + allOverlays = allOverlays.concat(window.intermediates); + + if (allOverlays.length > 0) { + window.map.setFitView(allOverlays, {padding: [50, 50, 50, 50]}); + } + + console.log('Path visualization completed with ' + window.intermediates.length + ' intermediate point markers (no labels)'); } - - console.log('Path visualization completed with ' + window.intermediates.length + ' intermediate point markers (no labels)'); - } - )").arg(pathData, pathOverlayId_); - runMapJavaScript(js); - qDebug() << "路径可视化完成"; + )").arg(pathData, pathOverlayId_); + runMapJavaScript(js); + qDebug() << "路径可视化完成"; + } else { + // 等待就绪 + connect(this, &MapPage::mapReady, [this, pathData](){ + visualizePath(pathData); // 递归调用一次 + disconnect(this, &MapPage::mapReady, nullptr, nullptr); // 清理 + }); + qDebug() << "等待地图就绪后可视化路径"; + } } void MapPage::onPageLoaded(bool ok) { @@ -1148,23 +1259,25 @@ PathPlanningDialog::PathPlanningDialog(QWidget *parent, MapPage* mapPage) : QDia auto* selectLayout = new QHBoxLayout(); selectStartBtn_ = new QPushButton("选择起点"); connect(selectStartBtn_, &QPushButton::clicked, [this](){ - QMessageBox::information(this, "提示", "现在可以点击地图选择起点。"); + if (!mapPage_) return; + QMessageBox::information(this, "提示", "现在在地图上点击选择起点。"); selectingStart_ = true; selectingEnd_ = false; mapPage_->addClickListener(); - // 隐藏本对话框,显示地图界面进行点击 - this->hide(); + mapPage_->show(); // 确保地图可见 + // 无需隐藏对话框,因为非模态 }); selectLayout->addWidget(selectStartBtn_); selectEndBtn_ = new QPushButton("选择终点"); connect(selectEndBtn_, &QPushButton::clicked, [this](){ - QMessageBox::information(this, "提示", "现在可以点击地图选择终点。"); + if (!mapPage_) return; + QMessageBox::information(this, "提示", "现在在地图上点击选择终点。"); selectingStart_ = false; selectingEnd_ = true; mapPage_->addClickListener(); - // 隐藏本对话框,显示地图界面进行点击 - this->hide(); + mapPage_->show(); // 确保地图可见 + // 无需隐藏对话框,因为非模态 }); selectLayout->addWidget(selectEndBtn_); layout->addLayout(selectLayout); @@ -1180,7 +1293,11 @@ PathPlanningDialog::PathPlanningDialog(QWidget *parent, MapPage* mapPage) : QDia layout->addLayout(applyLayout); // Connect to map click signal - connect(mapPage_, &MapPage::mapClicked, this, &PathPlanningDialog::onMapClick); + if (mapPage_) { + connect(mapPage_, &MapPage::mapClicked, this, &PathPlanningDialog::onMapClick); + } else { + qDebug() << "Warning: No MapPage provided for PathPlanningDialog, map clicking disabled."; + } pathTable_ = new QTableWidget(); pathTable_->setColumnCount(2); @@ -1554,7 +1671,7 @@ void PathPlanningDialog::planPath() { return true; }; - // 贪心可见性“拉直”:每次连接最远可见点 + // 贪心可见性"拉直":每次连接最远可见点 QList> smooth; smooth.append(pathPoints.first()); int i = 0; @@ -1643,16 +1760,14 @@ void PathPlanningDialog::onMapClick(double lng, double lat) { selectingStart_ = false; mapPage_->removeClickListener(); QMessageBox::information(this, "成功", "起点已选择"); - // 选取完成后恢复显示对话框 - this->show(); + // 无需隐藏地图或显示对话框,用户可继续交互 } else if (selectingEnd_) { endInput_->setText(coord); mapPage_->showMarker(lng, lat, "E", "#FF9800", 1); selectingEnd_ = false; mapPage_->removeClickListener(); QMessageBox::information(this, "成功", "终点已选择"); - // 选取完成后恢复显示对话框 - this->show(); + // 无需隐藏地图或显示对话框 } } @@ -1663,59 +1778,85 @@ AreaCoverageDialog::AreaCoverageDialog(QWidget* parent, MapPage* mapPage) : QDia mainLayout->setContentsMargins(20, 20, 20, 20); mainLayout->setSpacing(15); - // Shape selection - auto* shapeLayout = new QHBoxLayout(); - shapeLayout->addWidget(new QLabel("区域形状:")); - shapeCombo_ = new QComboBox(); - shapeCombo_->addItems({"圆形", "多边形"}); - connect(shapeCombo_, QOverload::of(&QComboBox::currentIndexChanged), this, &AreaCoverageDialog::onShapeChanged); - shapeLayout->addWidget(shapeCombo_); - shapeLayout->addStretch(); - mainLayout->addLayout(shapeLayout); - - // Dynamic inputs based on shape - QWidget* inputWidget = new QWidget(); - auto* inputLayout = new QVBoxLayout(inputWidget); - mainLayout->addWidget(inputWidget); - - // Circle inputs (default) - circleWidget_ = setupCircleInputs(); - inputLayout->addWidget(circleWidget_); - - // Polygon inputs (hidden initially) - polygonWidget_ = setupPolygonInputs(); - inputLayout->addWidget(polygonWidget_); - - // Search mode - auto* modeGroupBox = new QGroupBox("搜索模式"); - auto* modeLayout = new QHBoxLayout(modeGroupBox); - efficiencyRadio_ = new QRadioButton("高效率"); - fullRangeRadio_ = new QRadioButton("全范围"); - efficiencyRadio_->setChecked(true); - modeGroup_ = new QButtonGroup(this); - modeGroup_->addButton(efficiencyRadio_); - modeGroup_->addButton(fullRangeRadio_); - modeLayout->addWidget(efficiencyRadio_); - modeLayout->addWidget(fullRangeRadio_); - modeLayout->addStretch(); - mainLayout->addWidget(modeGroupBox); - - // Drone count + // 取消区域形状/中心/半径输入,改为威胁区域选择 + + // Drone params auto* droneLayout = new QHBoxLayout(); droneLayout->addWidget(new QLabel("无人机数量:")); droneCountSpin_ = new QSpinBox(); droneCountSpin_->setRange(1, 10); droneCountSpin_->setValue(1); + connect(droneCountSpin_, QOverload::of(&QSpinBox::valueChanged), this, &AreaCoverageDialog::onDroneCountChanged); droneLayout->addWidget(droneCountSpin_); + // 威胁区域由下方列表选择 droneLayout->addStretch(); mainLayout->addLayout(droneLayout); - // Path table + // 每机参数表(半径m、速度m/s、路径颜色、搜索圈颜色) + droneParamsTable_ = new QTableWidget(); + droneParamsTable_->setColumnCount(4); + droneParamsTable_->setHorizontalHeaderLabels({"搜索半径(米)", "初速度(米/秒)", "路径颜色", "搜索圈颜色"}); + droneParamsTable_->setMinimumHeight(120); + mainLayout->addWidget(droneParamsTable_); + onDroneCountChanged(droneCountSpin_->value()); + + // 威胁区域选择 + auto* threatBox = new QGroupBox("选择威胁区域(用于覆盖规划)"); + auto* threatLayout = new QVBoxLayout(threatBox); + threatSelectTable_ = new QTableWidget(); + threatSelectTable_->setColumnCount(4); + threatSelectTable_->setHorizontalHeaderLabels({"选择", "类型", "形状", "详情"}); + threatSelectTable_->setSelectionMode(QAbstractItemView::NoSelection); + threatSelectTable_->setEditTriggers(QAbstractItemView::NoEditTriggers); + threatLayout->addWidget(threatSelectTable_); + auto* threatBtnLayout = new QHBoxLayout(); + selectAllBtn_ = new QPushButton("全选"); + selectNoneBtn_ = new QPushButton("全不选"); + refreshThreatsBtn_ = new QPushButton("刷新"); + connect(selectAllBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onSelectAllThreats); + connect(selectNoneBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onSelectNoneThreats); + connect(refreshThreatsBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onRefreshThreats); + threatBtnLayout->addStretch(); + threatBtnLayout->addWidget(refreshThreatsBtn_); + threatBtnLayout->addWidget(selectAllBtn_); + threatBtnLayout->addWidget(selectNoneBtn_); + threatLayout->addLayout(threatBtnLayout); + mainLayout->addWidget(threatBox); + populateThreatList(); + + // Path table with drone selector + auto* pathBox = new QGroupBox("无人机路径坐标"); + auto* pathLayout = new QVBoxLayout(pathBox); + auto* selectorLayout = new QHBoxLayout(); + selectorLayout->addWidget(new QLabel("选择无人机:")); + pathDroneSelector_ = new QComboBox(); + pathDroneSelector_->addItem("全部无人机"); + connect(pathDroneSelector_, QOverload::of(&QComboBox::currentIndexChanged), this, &AreaCoverageDialog::onPathDroneChanged); + selectorLayout->addWidget(pathDroneSelector_); + selectorLayout->addStretch(); + pathLayout->addLayout(selectorLayout); pathTable_ = new QTableWidget(); - pathTable_->setColumnCount(2); - pathTable_->setHorizontalHeaderLabels({"经度", "纬度"}); + pathTable_->setColumnCount(3); + pathTable_->setHorizontalHeaderLabels({"无人机编号", "经度", "纬度"}); pathTable_->setMinimumHeight(150); - mainLayout->addWidget(pathTable_); + pathLayout->addWidget(pathTable_); + mainLayout->addWidget(pathBox); + + // 统计信息 + auto* statsBox = new QGroupBox("搜索统计"); + auto* statsLayout = new QVBoxLayout(statsBox); + statsLabel_ = new QLabel("等待路径规划..."); + statsLabel_->setWordWrap(true); + statsLabel_->setStyleSheet("padding: 10px; background: #f5f5f5; border-radius: 5px;"); + // 添加滚动区域 + auto* scrollArea = new QScrollArea(); + scrollArea->setWidget(statsLabel_); + scrollArea->setWidgetResizable(true); + scrollArea->setMinimumHeight(150); + scrollArea->setMaximumHeight(300); + scrollArea->setStyleSheet("QScrollArea { border: 1px solid #ddd; border-radius: 5px; }"); + statsLayout->addWidget(scrollArea); + mainLayout->addWidget(statsBox); // Plan buttons auto* planButtonsLayout = new QHBoxLayout(); @@ -1726,6 +1867,21 @@ AreaCoverageDialog::AreaCoverageDialog(QWidget* parent, MapPage* mapPage) : QDia clearBtn_ = new QPushButton("清除规划"); connect(clearBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::clearCoverage); planButtonsLayout->addWidget(clearBtn_); + + playAnimationBtn_ = new QPushButton("播放动画"); + connect(playAnimationBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onPlayAnimation); + planButtonsLayout->addWidget(playAnimationBtn_); + + stopAnimationBtn_ = new QPushButton("停止动画"); + stopAnimationBtn_->setEnabled(false); + connect(stopAnimationBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onStopAnimation); + planButtonsLayout->addWidget(stopAnimationBtn_); + + resetAnimationBtn_ = new QPushButton("重置动画"); + resetAnimationBtn_->setEnabled(false); + connect(resetAnimationBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::onResetAnimation); + planButtonsLayout->addWidget(resetAnimationBtn_); + planButtonsLayout->addStretch(); mainLayout->addLayout(planButtonsLayout); @@ -1740,248 +1896,568 @@ AreaCoverageDialog::AreaCoverageDialog(QWidget* parent, MapPage* mapPage) : QDia buttonLayout->addWidget(cancelBtn); mainLayout->addLayout(buttonLayout); - // Connect map clicks - connect(mapPage_, &MapPage::mapClicked, this, &AreaCoverageDialog::onMapClick); - - // Connect table selection for polygon - connect(verticesTable_, &QTableWidget::currentCellChanged, this, [this](int currentRow, int currentColumn, int previousRow, int previousColumn) { - Q_UNUSED(currentColumn); - Q_UNUSED(previousRow); - Q_UNUSED(previousColumn); - currentVertexRow_ = currentRow; - }); - - onShapeChanged(0); // Initialize with circle + // 不再需要地图点选/形状输入 } -QWidget* AreaCoverageDialog::setupCircleInputs() { - auto* circleWidget = new QWidget(); - auto* circleLayout = new QFormLayout(circleWidget); - centerLngInput_ = new QLineEdit(); - centerLngInput_->setPlaceholderText("中心经度"); - circleLayout->addRow("中心经度:", centerLngInput_); - centerLatInput_ = new QLineEdit(); - centerLatInput_->setPlaceholderText("中心纬度"); - circleLayout->addRow("中心纬度:", centerLatInput_); - radiusInput_ = new QLineEdit(); - radiusInput_->setPlaceholderText("半径 (km)"); - radiusInput_->setText("1.0"); - circleLayout->addRow("半径 (km):", radiusInput_); - return circleWidget; -} - -QWidget* AreaCoverageDialog::setupPolygonInputs() { - auto* polyWidget = new QWidget(); - auto* polyLayout = new QVBoxLayout(polyWidget); - - verticesTable_ = new QTableWidget(); - verticesTable_->setColumnCount(2); - verticesTable_->setHorizontalHeaderLabels({"经度", "纬度"}); - polyLayout->addWidget(verticesTable_); - - auto* polyButtonsLayout = new QHBoxLayout(); - addVertexBtn_ = new QPushButton("添加顶点"); - connect(addVertexBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::addVertex); - polyButtonsLayout->addWidget(addVertexBtn_); - removeVertexBtn_ = new QPushButton("移除顶点"); - connect(removeVertexBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::removeVertex); - polyButtonsLayout->addWidget(removeVertexBtn_); - selectVertexBtn_ = new QPushButton("地图选择顶点"); - connect(selectVertexBtn_, &QPushButton::clicked, this, &AreaCoverageDialog::selectVertexOnMap); - polyButtonsLayout->addWidget(selectVertexBtn_); - polyButtonsLayout->addStretch(); - polyLayout->addLayout(polyButtonsLayout); - - return polyWidget; -} - -void AreaCoverageDialog::onShapeChanged(int index) { - if (index == 0) { // Circle - circleWidget_->setVisible(true); - polygonWidget_->setVisible(false); - } else { // Polygon - circleWidget_->setVisible(false); - polygonWidget_->setVisible(true); - } -} - -void AreaCoverageDialog::addVertex() { - int row = verticesTable_->rowCount(); - verticesTable_->insertRow(row); - verticesTable_->setItem(row, 0, new QTableWidgetItem("0.000000")); - verticesTable_->setItem(row, 1, new QTableWidgetItem("0.000000")); - vertices_.append(qMakePair(0.0, 0.0)); -} - -void AreaCoverageDialog::removeVertex() { - int row = verticesTable_->currentRow(); - if (row >= 0) { - vertices_.removeAt(row); - verticesTable_->removeRow(row); - } -} - -void AreaCoverageDialog::selectVertexOnMap() { - if (currentVertexRow_ < 0) { - addVertex(); - currentVertexRow_ = verticesTable_->rowCount() - 1; - } - QMessageBox::information(this, "提示", "点击地图选择顶点位置"); - selectingVertex_ = true; - mapPage_->addClickListener(); -} - -void AreaCoverageDialog::onMapClick(double lng, double lat) { - if (selectingVertex_) { - if (currentVertexRow_ >= 0 && currentVertexRow_ < verticesTable_->rowCount()) { - verticesTable_->setItem(currentVertexRow_, 0, new QTableWidgetItem(QString::number(lng, 'f', 6))); - verticesTable_->setItem(currentVertexRow_, 1, new QTableWidgetItem(QString::number(lat, 'f', 6))); - vertices_[currentVertexRow_] = qMakePair(lng, lat); - mapPage_->showMarker(lng, lat, QString::number(currentVertexRow_ + 1), "#2196F3", currentVertexRow_); - selectingVertex_ = false; - mapPage_->removeClickListener(); - QMessageBox::information(this, "成功", "顶点已更新"); +void AreaCoverageDialog::onMapClick(double, double) {} + +void AreaCoverageDialog::onDroneCountChanged(int value) { + if (value < 1) value = 1; + if (value > 10) value = 10; + droneParamsTable_->setRowCount(value); + QStringList colors = {"红色", "蓝色", "紫色", "粉色", "绿色", "橙色", "青色", "棕色", "黄色", "灰色"}; + for (int i = 0; i < value; ++i) { + if (!droneParamsTable_->item(i, 0)) droneParamsTable_->setItem(i, 0, new QTableWidgetItem()); + if (!droneParamsTable_->item(i, 1)) droneParamsTable_->setItem(i, 1, new QTableWidgetItem()); + if (!droneParamsTable_->cellWidget(i, 2)) { + QComboBox* pathColorCombo = new QComboBox(); + pathColorCombo->addItems(colors); + pathColorCombo->setCurrentIndex(i % colors.size()); + droneParamsTable_->setCellWidget(i, 2, pathColorCombo); } + if (!droneParamsTable_->cellWidget(i, 3)) { + QComboBox* circleColorCombo = new QComboBox(); + circleColorCombo->addItems(colors); + circleColorCombo->setCurrentIndex((i + 1) % colors.size()); + droneParamsTable_->setCellWidget(i, 3, circleColorCombo); + } + // 默认值:半径 80/100/120...,速度 10/12/14... + if (droneParamsTable_->item(i, 0)->text().isEmpty()) droneParamsTable_->item(i, 0)->setText(QString::number(80 + i * 20)); + if (droneParamsTable_->item(i, 1)->text().isEmpty()) droneParamsTable_->item(i, 1)->setText(QString::number(10 + i * 2)); } } void AreaCoverageDialog::planCoveragePath() { - // Update vertices from table for polygon - if (shapeCombo_->currentIndex() == 1) { - vertices_.clear(); - for (int i = 0; i < verticesTable_->rowCount(); ++i) { - double lng = verticesTable_->item(i, 0) ? verticesTable_->item(i, 0)->text().toDouble() : 0.0; - double lat = verticesTable_->item(i, 1) ? verticesTable_->item(i, 1)->text().toDouble() : 0.0; - vertices_.append(qMakePair(lng, lat)); + if (mapPage_) { + const auto &areas = mapPage_->getThreatAreas(); + if (threatSelectTable_->rowCount() == 0) populateThreatList(); + QList selectedIdx; + for (int r = 0; r < threatSelectTable_->rowCount(); ++r) { + QWidget* cell = threatSelectTable_->cellWidget(r, 0); + QCheckBox* cb = cell ? cell->findChild() : nullptr; + if (cb && cb->isChecked()) { + if (r >= 0 && r < threatRowToIndex_.size()) selectedIdx.append(threatRowToIndex_[r]); + } } - } - - // Validate inputs based on shape - if (shapeCombo_->currentIndex() == 0) { // Circle - bool ok1 = centerLngInput_->text().toDouble() != 0.0; - bool ok2 = centerLatInput_->text().toDouble() != 0.0; - bool ok3; - double radiusKm = radiusInput_->text().toDouble(&ok3); - if (!ok1 || !ok2 || !ok3 || radiusKm <= 0) { - QMessageBox::warning(this, "错误", "无效的圆形参数"); + if (selectedIdx.isEmpty()) { + QMessageBox::warning(this, "提示", "请至少选择一个威胁区域"); return; } - // Generate spiral path - generateMockCoveragePath(); // Will use circle params - } else { // Polygon - if (vertices_.size() < 3) { - QMessageBox::warning(this, "错误", "多边形至少需要3个顶点"); + QList chosen; + for (int idx : selectedIdx) if (idx >= 0 && idx < areas.size()) chosen.append(areas[idx]); + if (chosen.isEmpty()) { + QMessageBox::warning(this, "提示", "选择结果为空"); return; } - // Generate zigzag path - generateMockCoveragePath(); // Will use vertices - } + // 计算威胁区域联合包围盒 + double minLng = 180, maxLng = -180, minLat = 90, maxLat = -90; + for (const auto &a : chosen) { + QString shape = a.value("shape").toString(); + if (shape == "circle" || shape == "圆形") { + double clng = a.value("centerLng").toDouble(); + double clat = a.value("centerLat").toDouble(); + double r_m = a.value("radius").toDouble(); + double d = r_m / 111000.0 + 0.002; + minLng = std::min(minLng, clng - d); + maxLng = std::max(maxLng, clng + d); + minLat = std::min(minLat, clat - d); + maxLat = std::max(maxLat, clat + d); + } else { + QList pts = a.value("points").toList(); + for (const auto &pv : pts) { + auto p = pv.toMap(); + minLng = std::min(minLng, p.value("lng").toDouble()); + maxLng = std::max(maxLng, p.value("lng").toDouble()); + minLat = std::min(minLat, p.value("lat").toDouble()); + maxLat = std::max(maxLat, p.value("lat").toDouble()); + } + } + } - // Visualize area first (mock polygon or circle) - // For simplicity, skip detailed area overlay, focus on path + // 读取无人机参数 + int droneCount = droneCountSpin_->value(); + QList radii; + QList speeds; + QList pathColors; + QList circleColors; + radii.reserve(droneCount); + speeds.reserve(droneCount); + pathColors.reserve(droneCount); + circleColors.reserve(droneCount); + QMap colorMap = { + {"红色", "#E53935"}, {"蓝色", "#1E88E5"}, {"紫色", "#8E24AA"}, {"粉色", "#F06292"}, + {"绿色", "#43A047"}, {"橙色", "#FB8C00"}, {"青色", "#00ACC1"}, {"棕色", "#6D4C41"}, + {"黄色", "#FDD835"}, {"灰色", "#757575"} + }; + for (int i = 0; i < droneCount; ++i) { + bool okR = false, okS = false; + double r = droneParamsTable_->item(i, 0) ? droneParamsTable_->item(i, 0)->text().toDouble(&okR) : 0.0; + double s = droneParamsTable_->item(i, 1) ? droneParamsTable_->item(i, 1)->text().toDouble(&okS) : 0.0; + if (!okR || r <= 0.0) r = 80.0 + i * 20.0; + if (!okS || s <= 0.0) s = 10.0 + i * 2.0; + + QString pathColorName = "红色"; + QComboBox* pathColorCombo = qobject_cast(droneParamsTable_->cellWidget(i, 2)); + if (pathColorCombo) pathColorName = pathColorCombo->currentText(); + QString pathHexColor = colorMap.value(pathColorName, "#E53935"); + + QString circleColorName = "蓝色"; + QComboBox* circleColorCombo = qobject_cast(droneParamsTable_->cellWidget(i, 3)); + if (circleColorCombo) circleColorName = circleColorCombo->currentText(); + QString circleHexColor = colorMap.value(circleColorName, "#1E88E5"); + + radii.append(r); + speeds.append(s); + pathColors.append(pathHexColor); + circleColors.append(circleHexColor); + } - // Show path in table and store data - pathTable_->setRowCount(0); - // Assume generateMockCoveragePath populates a list of points - // For now, mock some points - QList> mockPath; - double radiusKm = radiusInput_->text().toDouble(); // Define radius - if (shapeCombo_->currentIndex() == 0) { - // Spiral around center - double centerLng = centerLngInput_->text().toDouble(); - double centerLat = centerLatInput_->text().toDouble(); - double r = 0.0; - double step = radiusKm / 20.0; // 20 steps - for (int i = 0; i < 100; ++i) { // 100 points - double angle = i * 0.2; // radians - r += step / 10.0; // Increase radius slowly - double dx = r * cos(angle); - double dy = r * sin(angle); - // Approximate km to degrees: ~1/111 deg per km - double pointLng = centerLng + (dx / 111.0); - double pointLat = centerLat + (dy / 111.0); - mockPath.append(qMakePair(pointLng, pointLat)); - if (r >= radiusKm) break; + // 网格化并按无人机拆分点集(借鉴区域搜索JS思路) + double spanLng = std::max(1e-6, maxLng - minLng); + double spanLat = std::max(1e-6, maxLat - minLat); + // 使用第一架无人机半径估计网格间距 + double avgRadius = 0.0; + for (double r : radii) avgRadius += r; + avgRadius = (droneCount > 0) ? (avgRadius / double(droneCount)) : 100.0; + double gridSpacingDegLat = (avgRadius * 0.7) / 111000.0; // 间距=0.7*半径,兼顾重叠 + double centerLat = (minLat + maxLat) / 2.0; + double gridSpacingDegLng = (avgRadius * 0.7) / (111000.0 * std::max(0.1, std::cos(centerLat * 3.14159265358979323846 / 180.0))); + int rows = std::max(2, int(std::ceil(spanLat / gridSpacingDegLat)) + 1); + int cols = std::max(2, int(std::ceil(spanLng / gridSpacingDegLng)) + 1); + + QList> allPoints; + allPoints.reserve(rows * cols); + for (int r = 0; r < rows; ++r) { + double lat = minLat + r * gridSpacingDegLat; + if (lat > maxLat) lat = maxLat; + for (int c = 0; c < cols; ++c) { + double lng = minLng + c * gridSpacingDegLng; + if (lng > maxLng) lng = maxLng; + allPoints.append(qMakePair(lng, lat)); + } } - } else { - // Zigzag along polygon bounding box - double minLng = 180, maxLng = -180, minLat = 90, maxLat = -90; - for (auto& v : vertices_) { - minLng = qMin(minLng, v.first); - maxLng = qMax(maxLng, v.first); - minLat = qMin(minLat, v.second); - maxLat = qMax(maxLat, v.second); + + // 将点按无人机平均分配并做蛇形排序以减少跳跃 + QList>> perDronePaths; + for (int i = 0; i < droneCount; ++i) { + perDronePaths.append(QList>()); + } + int pointsPerDrone = std::max(1, int(std::ceil(double(allPoints.size()) / double(droneCount)))); + for (int i = 0; i < droneCount; ++i) { + int startIndex = i * pointsPerDrone; + int endIndex = std::min(startIndex + pointsPerDrone, allPoints.size()); + QList> pts; + for (int k = startIndex; k < endIndex; ++k) pts.append(allPoints[k]); + // 蛇形:行内往返 + QList> ordered; + if (!pts.isEmpty()) { + // 简化:按行重建 + int count = pts.size(); + int perRow = cols; + for (int idx = 0; idx < count; ) { + int take = std::min(perRow, count - idx); + QList> rowPts; + for (int t = 0; t < take; ++t) rowPts.append(pts[idx + t]); + if (((idx / perRow) % 2) == 1) std::reverse(rowPts.begin(), rowPts.end()); + for (auto &p : rowPts) ordered.append(p); + idx += take; + } + } + perDronePaths[i] = ordered; + } + + // 生成多路径 JSON:[{pathColor, circleColor, radius, path:[[lng,lat],...]}] + QString multiJson = "["; + for (int i = 0; i < droneCount; ++i) { + if (i) multiJson += ","; + QString pathColor = pathColors[i]; + QString circleColor = circleColors[i]; + multiJson += "{\"pathColor\":\"" + pathColor + "\",\"circleColor\":\"" + circleColor + "\",\"radius\":" + QString::number(radii[i], 'f', 2) + ",\"path\":["; + const auto &pts = perDronePaths[i]; + for (int j = 0; j < pts.size(); ++j) { + if (j) multiJson += ","; + multiJson += QString("[%1,%2]").arg(pts[j].first, 0, 'f', 6).arg(pts[j].second, 0, 'f', 6); + } + multiJson += "]}"; } - double width = maxLng - minLng; - double height = maxLat - minLat; - int numLines = 10; - for (int line = 0; line < numLines; ++line) { - double y = minLat + (height / numLines) * line; - for (double x = minLng; x <= maxLng; x += width / 20.0) { - mockPath.append(qMakePair(x, y)); + multiJson += "]"; + + // 可视化多路径 + mapPage_->visualizeCoverageMultiPaths(multiJson); + + // 计算统计信息 + double totalDistance = 0.0; + double totalCoverageArea = 0.0; + double maxFlightTime = 0.0; + QStringList statsLines; + statsLines.append("=== 搜索统计 ===
"); + statsLines.append(QString("无人机数量: %1 架
").arg(droneCount)); + statsLines.append("
"); + + for (int i = 0; i < droneCount; ++i) { + const auto &pts = perDronePaths[i]; + // 计算路径长度(使用Haversine公式估算) + double pathDist = 0.0; + for (int j = 1; j < pts.size(); ++j) { + double lat1 = pts[j-1].second, lng1 = pts[j-1].first; + double lat2 = pts[j].second, lng2 = pts[j].first; + double dLat = (lat2 - lat1) * M_PI / 180.0; + double dLng = (lng2 - lng1) * M_PI / 180.0; + double a = sin(dLat/2) * sin(dLat/2) + cos(lat1 * M_PI / 180.0) * cos(lat2 * M_PI / 180.0) * sin(dLng/2) * sin(dLng/2); + double c = 2 * atan2(sqrt(a), sqrt(1-a)); + pathDist += 6371000.0 * c; // 地球半径米 } - // Zigzag back - if (line < numLines - 1) { - y = minLat + (height / numLines) * (line + 1); - for (double x = maxLng; x >= minLng; x -= width / 20.0) { - mockPath.append(qMakePair(x, y)); + totalDistance += pathDist; + + // 计算覆盖面积(近似:点数 * π * r²) + double coverageArea = pts.size() * M_PI * radii[i] * radii[i]; + totalCoverageArea += coverageArea; + + // 计算飞行时间(秒转分钟) + double flightTime = pathDist / speeds[i] / 60.0; + if (flightTime > maxFlightTime) maxFlightTime = flightTime; + + statsLines.append(QString("无人机 %1:
").arg(i + 1)); + statsLines.append(QString(" 飞行距离: %1 米
").arg(int(pathDist))); + statsLines.append(QString(" 覆盖面积: %1 平方米
").arg(int(coverageArea))); + statsLines.append(QString(" 预计时间: %1 分钟
").arg(QString::number(flightTime, 'f', 1))); + statsLines.append("
"); + } + + // 计算威胁区域总面积 + double threatAreaSize = 0.0; + for (const auto &a : chosen) { + QString shape = a.value("shape").toString(); + if (shape == "circle" || shape == "圆形") { + double r = a.value("radius").toDouble(); + threatAreaSize += M_PI * r * r; + } else { + // 矩形近似 + QList pts = a.value("points").toList(); + if (pts.size() >= 2) { + double minLng = 180, maxLng = -180, minLat = 90, maxLat = -90; + for (const auto &pv : pts) { + auto p = pv.toMap(); + minLng = std::min(minLng, p.value("lng").toDouble()); + maxLng = std::max(maxLng, p.value("lng").toDouble()); + minLat = std::min(minLat, p.value("lat").toDouble()); + maxLat = std::max(maxLat, p.value("lat").toDouble()); + } + double latSpan = (maxLat - minLat) * M_PI / 180.0; + double lngSpan = (maxLng - minLng) * M_PI / 180.0; + double avgLat = (minLat + maxLat) / 2.0 * M_PI / 180.0; + threatAreaSize += 6371000.0 * latSpan * 6371000.0 * lngSpan * cos(avgLat); } } } + + // 计算覆盖率 + double coverageRate = (threatAreaSize > 0) ? (totalCoverageArea / threatAreaSize * 100.0) : 0.0; + if (coverageRate > 100.0) coverageRate = 100.0; + + statsLines.append("=== 总体统计 ===
"); + statsLines.append(QString("总飞行距离: %1 米
").arg(int(totalDistance))); + statsLines.append(QString("总覆盖面积: %1 平方米
").arg(int(totalCoverageArea))); + statsLines.append(QString("威胁区域面积: %1 平方米
").arg(int(threatAreaSize))); + statsLines.append(QString("覆盖率: %1%
").arg(QString::number(coverageRate, 'f', 1))); + statsLines.append(QString("最长飞行时间: %1 分钟
").arg(QString::number(maxFlightTime, 'f', 1))); + + statsLabel_->setText(statsLines.join("")); + + // 更新无人机选择器和路径表格 + pathDroneSelector_->clear(); + pathDroneSelector_->addItem("全部无人机"); + for (int i = 0; i < droneCount; ++i) { + pathDroneSelector_->addItem(QString("无人机 %1").arg(i + 1)); + } + // 显示所有无人机的路径坐标 + int totalPoints = 0; + for (int i = 0; i < droneCount; ++i) totalPoints += perDronePaths[i].size(); + pathTable_->setRowCount(totalPoints); + int row = 0; + for (int i = 0; i < droneCount; ++i) { + const auto &pts = perDronePaths[i]; + for (int j = 0; j < pts.size(); ++j) { + pathTable_->setItem(row, 0, new QTableWidgetItem(QString("无人机 %1").arg(i + 1))); + pathTable_->setItem(row, 1, new QTableWidgetItem(QString::number(pts[j].first, 'f', 6))); + pathTable_->setItem(row, 2, new QTableWidgetItem(QString::number(pts[j].second, 'f', 6))); + ++row; + } + } + + // 保存路径数据用于动画 + coveragePathData_ = multiJson; + + // 完成提示 + QMessageBox::information(this, "成功", QString("威胁区域覆盖路径已生成(%1 架无人机,覆盖率 %2%)").arg(droneCount).arg(QString::number(coverageRate, 'f', 1))); + return; } +} - // Adjust for drone count: divide path into segments - int drones = droneCountSpin_->value(); - if (drones > 1) { - // For mock, just use full path; in real, assign segments +void AreaCoverageDialog::clearCoverage() { + if (mapPage_) { + // 先停止动画 + onStopAnimation(); + + // 清除多路径覆盖物 + QString clearJs = R"( + if (window.map) { + if (window.multiPolylines) { + for (var i=0;irunMapJavaScript(clearJs); + } + pathTable_->setRowCount(0); + pathDroneSelector_->clear(); + pathDroneSelector_->addItem("全部无人机"); + statsLabel_->setText("等待路径规划..."); + coveragePathData_ = ""; + // 恢复按钮状态 + playAnimationBtn_->setEnabled(true); + stopAnimationBtn_->setEnabled(false); + resetAnimationBtn_->setEnabled(false); + // 取消选择 + for (int r = 0; r < (threatSelectTable_ ? threatSelectTable_->rowCount() : 0); ++r) { + QWidget* cell = threatSelectTable_->cellWidget(r, 0); + QCheckBox* cb = cell ? cell->findChild() : nullptr; + if (cb) cb->setChecked(false); } + QMessageBox::information(this, "成功", "覆盖规划已清除"); +} + +void AreaCoverageDialog::populateThreatList() { + threatSelectTable_->setRowCount(0); + threatRowToIndex_.clear(); + if (!mapPage_) return; + const auto &areas = mapPage_->getThreatAreas(); + threatSelectTable_->setRowCount(areas.size()); + int r = 0; + for (const auto &a : areas) { + // 勾选框 + QWidget* w = new QWidget(); + auto* layout = new QHBoxLayout(w); + layout->setContentsMargins(0,0,0,0); + auto* cb = new QCheckBox(); + layout->addWidget(cb); + layout->addStretch(); + w->setLayout(layout); + threatSelectTable_->setCellWidget(r, 0, w); + + // 类型/形状/详情 + QString type = a.value("type").toString(); + QString shape = a.value("shape").toString(); + QString detail; + if (shape == "circle" || shape == "圆形") { + detail = QString("center=(%1,%2), r=%3m") + .arg(a.value("centerLng").toDouble(),0,'f',5) + .arg(a.value("centerLat").toDouble(),0,'f',5) + .arg(a.value("radius").toDouble(),0,'f',1); + } else { + QList pts = a.value("points").toList(); + detail = QString("pts=%1").arg(pts.size()); + } + threatSelectTable_->setItem(r, 1, new QTableWidgetItem(type.isEmpty()?"威胁":type)); + threatSelectTable_->setItem(r, 2, new QTableWidgetItem(shape)); + threatSelectTable_->setItem(r, 3, new QTableWidgetItem(detail)); - // Populate table (sample first 20 points) - int displayCount = qMin(20, (int)mockPath.size()); - pathTable_->setRowCount(displayCount); - for (int i = 0; i < displayCount; ++i) { - pathTable_->setItem(i, 0, new QTableWidgetItem(QString::number(mockPath[i].first, 'f', 6))); - pathTable_->setItem(i, 1, new QTableWidgetItem(QString::number(mockPath[i].second, 'f', 6))); + threatRowToIndex_.append(r); + ++r; } + threatSelectTable_->resizeColumnsToContents(); +} - // Generate JSON - QString json = "["; - for (int i = 0; i < (int)mockPath.size(); ++i) { - if (i > 0) json += ","; - json += QString("[%1,%2]").arg(mockPath[i].first, 0, 'f', 6).arg(mockPath[i].second, 0, 'f', 6); +void AreaCoverageDialog::onSelectAllThreats() { + for (int r = 0; r < (threatSelectTable_ ? threatSelectTable_->rowCount() : 0); ++r) { + QWidget* cell = threatSelectTable_->cellWidget(r, 0); + QCheckBox* cb = cell ? cell->findChild() : nullptr; + if (cb) cb->setChecked(true); } - json += "]"; - coveragePathData_ = json; +} - // Visualize immediately - if (mapPage_) { - mapPage_->visualizeCoveragePath(coveragePathData_); +void AreaCoverageDialog::onSelectNoneThreats() { + for (int r = 0; r < (threatSelectTable_ ? threatSelectTable_->rowCount() : 0); ++r) { + QWidget* cell = threatSelectTable_->cellWidget(r, 0); + QCheckBox* cb = cell ? cell->findChild() : nullptr; + if (cb) cb->setChecked(false); } +} - bool isEfficiency = efficiencyRadio_->isChecked(); - QString mode = isEfficiency ? "高效率" : "全范围"; - QMessageBox::information(this, "成功", QString("覆盖路径规划完成 (%1模式, %2架无人机)").arg(mode).arg(drones)); +void AreaCoverageDialog::onRefreshThreats() { + populateThreatList(); + QMessageBox::information(this, "成功", "威胁区域列表已刷新"); } -void AreaCoverageDialog::generateMockCoveragePath() { - // Placeholder: actual generation in planCoveragePath - qDebug() << "生成模拟覆盖路径"; +void AreaCoverageDialog::onPathDroneChanged(int index) { + // 根据选择的无人机过滤路径表格 + if (index == 0) { + // 显示全部 + for (int r = 0; r < pathTable_->rowCount(); ++r) { + pathTable_->setRowHidden(r, false); + } + } else { + // 只显示选中的无人机(index-1对应无人机编号) + QString targetDrone = QString("无人机 %1").arg(index); + for (int r = 0; r < pathTable_->rowCount(); ++r) { + QTableWidgetItem* item = pathTable_->item(r, 0); + if (item) { + pathTable_->setRowHidden(r, item->text() != targetDrone); + } + } + } } -void AreaCoverageDialog::clearCoverage() { - if (mapPage_) { - mapPage_->clearCoverageOverlays(); +void AreaCoverageDialog::onPlayAnimation() { + if (!mapPage_ || coveragePathData_.isEmpty()) { + QMessageBox::warning(this, "提示", "请先完成路径规划"); + return; } - pathTable_->setRowCount(0); - coveragePathData_ = ""; - vertices_.clear(); - verticesTable_->setRowCount(0); - centerLngInput_->clear(); - centerLatInput_->clear(); - radiusInput_->clear(); - QMessageBox::information(this, "成功", "覆盖规划已清除"); + + // 启用/禁用按钮 + playAnimationBtn_->setEnabled(false); + stopAnimationBtn_->setEnabled(true); + resetAnimationBtn_->setEnabled(false); + + // 启动动画 + QString animationJs = QString(R"( + if (window.map && window.multiPolylines) { + // 清除现有动画标记 + if (window.animationMarkers) { + for (var i=0;i= path.length) { + clearInterval(interval); + return; + } + marker.setPosition(path[currentIndex]); + currentIndex++; + }, 300); // 300ms间隔,更慢的动画速度 + window.animationIntervals.push(interval); + })(marker, path, i); + } + } + } + )"); + + mapPage_->runMapJavaScript(animationJs); + + // 自动关闭对话框,便于观看动画 + this->hide(); } +void AreaCoverageDialog::onStopAnimation() { + if (!mapPage_) return; + + // 停止动画 + QString stopJs = R"( + if (window.animationIntervals) { + for (var i=0;irunMapJavaScript(stopJs); + + // 恢复按钮状态 + playAnimationBtn_->setEnabled(true); + stopAnimationBtn_->setEnabled(false); + resetAnimationBtn_->setEnabled(true); +} + +void AreaCoverageDialog::onResetAnimation() { + if (!mapPage_) return; + + // 停止当前动画 + onStopAnimation(); + + // 重置动画标记到起始位置 + QString resetJs = R"( + if (window.map && window.multiPolylines) { + // 清除现有动画标记 + if (window.animationMarkers) { + for (var i=0;irunMapJavaScript(resetJs); + + // 更新按钮状态 + playAnimationBtn_->setEnabled(true); + stopAnimationBtn_->setEnabled(false); + resetAnimationBtn_->setEnabled(false); +} // Implement LocateDialog methods LocateDialog::LocateDialog(QWidget *parent) : QDialog(parent), lng_(0.0), lat_(0.0) { @@ -2119,3 +2595,24 @@ void MapPage::addThreatOverlay(const QString& shape, const QVariantMap& params) runMapJavaScript(js + " console.log('Overlay added: " + overlayId + "'); "); threatAreas_.append(paramsWithId); // 存储带 ID } + +void MapPage::onMapReadyFromJS() { + isMapReady_ = true; + emit mapReady(); +} + +void MapPage::loadSavedPath() { + QFile file("task_path.json"); + if (file.open(QIODevice::ReadOnly)) { + QString pathData = file.readAll(); + file.close(); + if (!pathData.isEmpty()) { + visualizePath(pathData); + QMessageBox::information(this, "成功", "已加载并展示保存的路径"); + } else { + QMessageBox::warning(this, "错误", "保存路径为空"); + } + } else { + QMessageBox::warning(this, "错误", "无法打开保存文件"); + } +} diff --git a/Src/pages/mappage.h b/Src/pages/mappage.h index 4eeb185..0dd8a7e 100644 --- a/Src/pages/mappage.h +++ b/Src/pages/mappage.h @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include #include #include "mapbridge.h" @@ -129,39 +131,39 @@ public: AreaCoverageDialog(QWidget* parent = nullptr, MapPage* mapPage = nullptr); QString getCoveragePathData() const { return coveragePathData_; } private slots: - void onShapeChanged(int index); - void addVertex(); - void removeVertex(); - void selectVertexOnMap(); void planCoveragePath(); void clearCoverage(); void onMapClick(double lng, double lat); + void onDroneCountChanged(int value); + void onSelectAllThreats(); + void onSelectNoneThreats(); + void onRefreshThreats(); + void onPathDroneChanged(int index); + void onPlayAnimation(); + void onStopAnimation(); + void onResetAnimation(); private: - QWidget* setupCircleInputs(); - QWidget* setupPolygonInputs(); - void generateMockCoveragePath(); - QComboBox* shapeCombo_; - QLineEdit* centerLngInput_; - QLineEdit* centerLatInput_; - QLineEdit* radiusInput_; - QTableWidget* verticesTable_; - QPushButton* addVertexBtn_; - QPushButton* removeVertexBtn_; - QPushButton* selectVertexBtn_; - QButtonGroup* modeGroup_; - QRadioButton* efficiencyRadio_; - QRadioButton* fullRangeRadio_; + void populateThreatList(); QSpinBox* droneCountSpin_; + QTableWidget* droneParamsTable_; + QTableWidget* threatSelectTable_; + QComboBox* colorCombo_; + QPushButton* selectAllBtn_; + QPushButton* selectNoneBtn_; + QPushButton* refreshThreatsBtn_; QTableWidget* pathTable_; + QComboBox* pathDroneSelector_; + QLabel* statsLabel_; QPushButton* planBtn_; QPushButton* clearBtn_; - QWidget* circleWidget_; - QWidget* polygonWidget_; + QPushButton* playAnimationBtn_; + QPushButton* stopAnimationBtn_; + QPushButton* resetAnimationBtn_; MapPage* mapPage_; QString coveragePathData_; bool selectingVertex_ = false; int currentVertexRow_ = -1; - QList> vertices_; + QList threatRowToIndex_; }; class LocateDialog : public QDialog { @@ -200,6 +202,7 @@ class MapPage : public QWidget { public: explicit MapPage(QWidget* parent = nullptr); ~MapPage(); + QWebEngineView* getMapView() const { return mapView_; } QComboBox* getHeightCombo() const { return heightCombo_; } QPushButton* getDownloadMapBtn() const { return downloadMapBtn_; } @@ -211,6 +214,7 @@ signals: void pathPlanningRequested(); void areaCoverageRequested(); void mapClicked(double lng, double lat); + void mapReady(); // 新信号:地图初始化完成 private slots: void onHeightChanged(); @@ -224,12 +228,15 @@ private slots: void onSearchMapClicked(); void onConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID); void onPageLoaded(bool ok); + void loadSavedPath(); + void onMapReadyFromJS(); public slots: void addClickListener(); void removeClickListener(); void handleMapClick(double lng, double lat); void visualizePath(const QString& pathData); + void visualizeCoverageMultiPaths(const QString& multiPathsJson); void clearPathOverlays(); void runMapJavaScript(const QString& js); double parseLng(const QString& coord) const; @@ -237,6 +244,8 @@ public slots: void showMarker(double lng, double lat, const QString& label, const QString& color, int index); void visualizeCoveragePath(const QString& pathData); void clearCoverageOverlays(); + void visualizeCoverageAreaCircle(double centerLng, double centerLat, double radiusKm); + void visualizeCoverageAreaPolygon(const QList>& vertices); void enableDrawingMode(const QString& shape); void disableDrawingMode(); void addThreatOverlay(const QString& shape, const QVariantMap& params); @@ -285,6 +294,7 @@ private: QString drawingShape_; QList> drawingPoints_; QList threatAreas_; + bool isMapReady_ = false; // 跟踪地图就绪状态 public: const QList& getThreatAreas() const { return threatAreas_; } diff --git a/Src/pages/taskdata.cpp b/Src/pages/taskdata.cpp old mode 100755 new mode 100644 diff --git a/Src/pages/taskdata.h b/Src/pages/taskdata.h old mode 100755 new mode 100644 diff --git a/Src/pages/taskdecisionpage.cpp b/Src/pages/taskdecisionpage.cpp index 7363d6d..92b0e38 100644 --- a/Src/pages/taskdecisionpage.cpp +++ b/Src/pages/taskdecisionpage.cpp @@ -1,5 +1,8 @@ #include "taskdecisionpage.h" #include +#include "mappage.h" // For PathPlanningDialog and MapPage +#include // Added for file operations +#include // Added for saving paths TaskDecisionPage::TaskDecisionPage(QWidget* parent) : QWidget(parent) @@ -10,7 +13,9 @@ TaskDecisionPage::TaskDecisionPage(QWidget* parent) , generateBtn_(nullptr) , currentStep_(0) , isTargetClear_(true) - , previewMapPage_(nullptr) + , pathData_("") + , searchData_("") + , pathHistory_() // 初始化空列表 { setupUI(); } @@ -53,11 +58,6 @@ void TaskDecisionPage::setupUI() { mainLayout->addLayout(contentLayout, 1); - // 右侧预览区:嵌入MapPage - previewMapPage_ = new MapPage(); - previewMapPage_->setMinimumWidth(300); - mainLayout->addWidget(previewMapPage_); - // 初始化 onStepChanged(0); } @@ -102,9 +102,59 @@ QWidget* TaskDecisionPage::createStep2Widget() { pathResult_->setReadOnly(true); layout->addWidget(pathResult_); - auto* btn = new QPushButton("生成路径"); - connect(btn, &QPushButton::clicked, this, &TaskDecisionPage::onGeneratePath); - layout->addWidget(btn); + auto* btnLayout = new QHBoxLayout(); + auto* genBtn = new QPushButton("生成路径"); + connect(genBtn, &QPushButton::clicked, this, &TaskDecisionPage::onGeneratePath); + btnLayout->addWidget(genBtn); + + previewBtn_ = new QPushButton("预览路径"); + previewBtn_->setEnabled(false); + connect(previewBtn_, &QPushButton::clicked, this, [this](){ + if (!pathData_.isEmpty()) { + MapPage* previewMap = new MapPage(); + previewMap->setWindowTitle("路径预览"); + previewMap->resize(800, 600); + + // 等待页面加载完成后可视化路径 + connect(previewMap->getMapView()->page(), &QWebEnginePage::loadFinished, [previewMap, this](bool ok){ + if (ok) { + previewMap->visualizePath(pathData_); + } else { + QMessageBox::warning(this, "错误", "地图加载失败,无法预览路径"); + } + }); + + previewMap->show(); + } + }); + btnLayout->addWidget(previewBtn_); + + // 新增:保存按钮 + auto* saveBtn = new QPushButton("保存当前路径"); + connect(saveBtn, &QPushButton::clicked, this, &TaskDecisionPage::saveCurrentPath); + btnLayout->addWidget(saveBtn); + + layout->addLayout(btnLayout); + + // 新增:历史路径列表 + historyList_ = new QListWidget(); + historyList_->setSelectionMode(QAbstractItemView::SingleSelection); + layout->addWidget(new QLabel("历史路径:")); + layout->addWidget(historyList_); + + // 双击历史项预览 + connect(historyList_, &QListWidget::itemDoubleClicked, this, [this](QListWidgetItem* item){ + QString histPath = item->data(Qt::UserRole).toString(); + if (!histPath.isEmpty()) { + MapPage* histPreview = new MapPage(); + histPreview->setWindowTitle("历史路径预览"); + histPreview->resize(800, 600); + connect(histPreview->getMapView()->page(), &QWebEnginePage::loadFinished, [histPreview, histPath](bool ok){ + if (ok) histPreview->visualizePath(histPath); + }); + histPreview->show(); + } + }); return widget; } @@ -195,15 +245,40 @@ void TaskDecisionPage::onTargetClearChanged(bool clear) { roughCoord_->setVisible(!clear); } +// 修改onGeneratePath()为非模态 void TaskDecisionPage::onGeneratePath() { - // 模拟调用地图规划 - pathData_ = "路径生成: 从起点到目标,长度5km,时间10min"; - pathResult_->setText(pathData_); - QMessageBox::information(this, "路径规划", "路径已生成!"); - - // 更新预览地图:绘制路径 - QString js = "window.map.add(new AMap.Polyline({path: [[116.3,39.9], [116.4,39.9], [116.4,40.0]], strokeColor: '#FF0000'}));"; - previewMapPage_->runMapJavaScript(js); + QString start = startCoord_->text(); + QString target = isTargetClear_ ? targetCoord_->text() : roughCoord_->text(); + + if (start.isEmpty() || target.isEmpty()) { + QMessageBox::warning(this, "错误", "请输入起点和目标坐标"); + return; + } + + MapPage* planningMap = new MapPage(this); // 指定parent为TaskDecisionPage,确保窗口管理 + planningMap->setWindowTitle("路径规划地图"); + planningMap->resize(800, 600); // 设置合理大小 + planningMap->show(); // 立即显示地图窗口 + + PathPlanningDialog* dialog = new PathPlanningDialog(this, planningMap); + dialog->show(); // 非模态显示对话框 + + connect(dialog, &QDialog::finished, [this, dialog, planningMap](int result){ + if (result == QDialog::Accepted) { + pathData_ = dialog->getPathData(); + pathResult_->setText(pathData_); + previewBtn_->setEnabled(true); + + // 添加到历史 + pathHistory_.append(pathData_); + updateHistoryList(); + + QMessageBox::information(this, "路径规划", "路径已生成并保存到历史,可预览!"); + } + planningMap->hide(); // 隐藏地图 + delete dialog; + delete planningMap; // 清理 + }); } void TaskDecisionPage::onRecommendDrones() { @@ -225,10 +300,6 @@ void TaskDecisionPage::onReplanSearch() { coverage_->setText("覆盖范围: 90%"); searchData_ = "搜索策略生成"; QMessageBox::information(this, "规划", "搜索策略已重新规划!"); - - // 更新预览地图:绘制搜索区域 - QString js = "window.map.add(new AMap.Polygon({path: [[116.3,39.9], [116.5,39.9], [116.5,40.1], [116.3,40.1]], fillColor: '#00FF00'}));"; - previewMapPage_->runMapJavaScript(js); } void TaskDecisionPage::onAddTargetType() { @@ -264,7 +335,12 @@ void TaskDecisionPage::onGenerateTask() { taskPreview_->setText(preview); // 生成任务包(模拟保存JSON) - QMessageBox::information(this, "生成", "任务数据包已生成!"); + QFile file("task_path.json"); + if (file.open(QIODevice::WriteOnly)) { + file.write(pathData_.toUtf8()); + file.close(); + } + QMessageBox::information(this, "生成", "任务数据包已生成!路径保存到task_path.json"); } void TaskDecisionPage::onNextStep() { @@ -283,3 +359,29 @@ void TaskDecisionPage::onPrevStep() { onStepChanged(currentStep_ - 1); } } + +// 新增函数:更新历史列表 +void TaskDecisionPage::updateHistoryList() { + historyList_->clear(); + for (int i = 0; i < pathHistory_.size(); ++i) { + QListWidgetItem* item = new QListWidgetItem(QString("路径 %1").arg(i+1)); + item->setData(Qt::UserRole, pathHistory_[i]); + historyList_->addItem(item); + } +} + +// 新增函数:保存当前路径到文件(可选扩展) +void TaskDecisionPage::saveCurrentPath() { + if (pathData_.isEmpty()) { + QMessageBox::warning(this, "错误", "无当前路径可保存"); + return; + } + QFile file(QString("saved_path_%1.json").arg(QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss"))); + if (file.open(QIODevice::WriteOnly)) { + file.write(pathData_.toUtf8()); + file.close(); + QMessageBox::information(this, "成功", "当前路径已保存到文件"); + } else { + QMessageBox::warning(this, "错误", "保存失败"); + } +} diff --git a/Src/pages/taskdecisionpage.h b/Src/pages/taskdecisionpage.h index eaddb00..7014dc9 100644 --- a/Src/pages/taskdecisionpage.h +++ b/Src/pages/taskdecisionpage.h @@ -16,7 +16,7 @@ #include #include #include // 添加以支持QSpinBox -#include "mappage.h" // 添加用于嵌入MapPage +#include // 添加以支持QList class TaskDecisionPage : public QWidget { Q_OBJECT @@ -42,6 +42,8 @@ private: QWidget* createStep3Widget(); // 区域搜索策略 QWidget* createStep4Widget(); // 打击目标清单 QWidget* createStep5Widget(); // 任务预览与生成 + void updateHistoryList(); + void saveCurrentPath(); // 成员变量 QStackedWidget* contentStack_; @@ -49,6 +51,8 @@ private: QPushButton* prevBtn_; QPushButton* nextBtn_; QPushButton* generateBtn_; + QPushButton* previewBtn_; + QListWidget* historyList_; // 新增:历史路径列表 // 步骤1 QRadioButton* clearYes_; @@ -79,9 +83,8 @@ private: // 假设的路径/搜索数据(实际中从地图调用) QString pathData_; QString searchData_; + QList pathHistory_; // 新增:存储历史路径 - // 预览地图:使用MapPage - MapPage* previewMapPage_; }; #endif // TASKDECISIONPAGE_H diff --git a/Src/pages/taskdetailspage.cpp b/Src/pages/taskdetailspage.cpp old mode 100755 new mode 100644 diff --git a/Src/pages/taskdetailspage.h b/Src/pages/taskdetailspage.h old mode 100755 new mode 100644 diff --git a/build/Drone_project b/build/Drone_project old mode 100755 new mode 100644 index 6cbecca..82e41b6 Binary files a/build/Drone_project and b/build/Drone_project differ diff --git a/build/Makefile b/build/Makefile index b6be297..2d1ae68 100644 --- a/build/Makefile +++ b/build/Makefile @@ -37,7 +37,7 @@ MOVE = mv -f TAR = tar -cf COMPRESS = gzip -9f DISTNAME = Drone_project1.0.0 -DISTDIR = /home/wangjing/uav/Drone_project/build/.tmp/Drone_project1.0.0 +DISTDIR = /home/chenxiaofu/DRONE/Drone_project/build/.tmp/Drone_project1.0.0 LINK = g++ LFLAGS = -Wl,-O1 -Wl,-rpath-link,/usr/lib/x86_64-linux-gnu LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5WebEngineWidgets.so /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5WebEngineCore.so /usr/lib/x86_64-linux-gnu/libQt5Quick.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5QmlModels.so /usr/lib/x86_64-linux-gnu/libQt5WebChannel.so /usr/lib/x86_64-linux-gnu/libQt5Qml.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Positioning.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread @@ -142,6 +142,9 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ @@ -159,6 +162,7 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_serialport.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ @@ -170,6 +174,8 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ @@ -274,6 +280,9 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \ @@ -291,6 +300,7 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_serialport.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ @@ -302,6 +312,8 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ @@ -366,6 +378,9 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_location.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri: @@ -383,6 +398,7 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_serialport.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: @@ -394,6 +410,8 @@ Makefile: ../drone_ui.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake. /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: @@ -489,75 +507,71 @@ moc_mainwindow.cpp: ../Src/ui/mainwindow.h \ ../Src/pages/visionmodelpage.h \ ../Src/utils/stylehelper.h \ ../Src/pages/taskdecisionpage.h \ - ../Src/pages/mappage.h \ - ../Src/pages/mapbridge.h \ ../Src/pages/dronemanagementpage.h \ ../Src/pages/taskdetailspage.h \ ../Src/pages/taskdata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/ui/mainwindow.h -o moc_mainwindow.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/ui/mainwindow.h -o moc_mainwindow.cpp moc_dronedata.cpp: ../Src/models/dronedata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/models/dronedata.h -o moc_dronedata.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/models/dronedata.h -o moc_dronedata.cpp moc_detectiondata.cpp: ../Src/models/detectiondata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/models/detectiondata.h -o moc_detectiondata.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/models/detectiondata.h -o moc_detectiondata.cpp moc_videopage.cpp: ../Src/pages/videopage.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/videopage.h -o moc_videopage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/videopage.h -o moc_videopage.cpp moc_mappage.cpp: ../Src/pages/mappage.h \ ../Src/pages/mapbridge.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/mappage.h -o moc_mappage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/mappage.h -o moc_mappage.cpp moc_mapbridge.cpp: ../Src/pages/mapbridge.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/mapbridge.h -o moc_mapbridge.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/mapbridge.h -o moc_mapbridge.cpp moc_datapage.cpp: ../Src/pages/datapage.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/datapage.h -o moc_datapage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/datapage.h -o moc_datapage.cpp moc_taskdata.cpp: ../Src/pages/taskdata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdata.h -o moc_taskdata.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdata.h -o moc_taskdata.cpp moc_visionmodelpage.cpp: ../Src/pages/visionmodelpage.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/visionmodelpage.h -o moc_visionmodelpage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/visionmodelpage.h -o moc_visionmodelpage.cpp moc_taskdecisionpage.cpp: ../Src/pages/taskdecisionpage.h \ - ../Src/pages/mappage.h \ - ../Src/pages/mapbridge.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdecisionpage.h -o moc_taskdecisionpage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdecisionpage.h -o moc_taskdecisionpage.cpp moc_dronemanagementpage.cpp: ../Src/pages/dronemanagementpage.h \ ../Src/models/dronedata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/dronemanagementpage.h -o moc_dronemanagementpage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/dronemanagementpage.h -o moc_dronemanagementpage.cpp moc_taskdetailspage.cpp: ../Src/pages/taskdetailspage.h \ ../Src/pages/taskdata.h \ ../Src/models/dronedata.h \ moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/wangjing/uav/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/wangjing/uav/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdetailspage.h -o moc_taskdetailspage.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/chenxiaofu/DRONE/Drone_project/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/chenxiaofu/DRONE/Drone_project -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../Src/pages/taskdetailspage.h -o moc_taskdetailspage.cpp compiler_moc_objc_header_make_all: compiler_moc_objc_header_clean: @@ -581,8 +595,6 @@ main.o: ../Src/core/main.cpp ../Src/ui/mainwindow.h \ ../Src/pages/visionmodelpage.h \ ../Src/utils/stylehelper.h \ ../Src/pages/taskdecisionpage.h \ - ../Src/pages/mappage.h \ - ../Src/pages/mapbridge.h \ ../Src/pages/dronemanagementpage.h \ ../Src/pages/taskdetailspage.h \ ../Src/pages/taskdata.h @@ -594,12 +606,12 @@ mainwindow.o: ../Src/ui/mainwindow.cpp ../Src/ui/mainwindow.h \ ../Src/pages/visionmodelpage.h \ ../Src/utils/stylehelper.h \ ../Src/pages/taskdecisionpage.h \ - ../Src/pages/mappage.h \ - ../Src/pages/mapbridge.h \ ../Src/pages/dronemanagementpage.h \ ../Src/pages/taskdetailspage.h \ ../Src/pages/taskdata.h \ ../Src/pages/videopage.h \ + ../Src/pages/mappage.h \ + ../Src/pages/mapbridge.h \ ../Src/pages/datapage.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o ../Src/ui/mainwindow.cpp diff --git a/build/mainwindow.o b/build/mainwindow.o index 9f067a8..2076f73 100644 Binary files a/build/mainwindow.o and b/build/mainwindow.o differ diff --git a/build/mapbridge.o b/build/mapbridge.o index 3c0d964..a2988dd 100644 Binary files a/build/mapbridge.o and b/build/mapbridge.o differ diff --git a/build/mappage.o b/build/mappage.o index 8e5cf3f..c454c5b 100644 Binary files a/build/mappage.o and b/build/mappage.o differ diff --git a/build/moc_mapbridge.cpp b/build/moc_mapbridge.cpp index f07542b..04a5498 100644 --- a/build/moc_mapbridge.cpp +++ b/build/moc_mapbridge.cpp @@ -22,8 +22,8 @@ QT_BEGIN_MOC_NAMESPACE QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED struct qt_meta_stringdata_MapBridge_t { - QByteArrayData data[7]; - char stringdata0[49]; + QByteArrayData data[8]; + char stringdata0[58]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ @@ -37,12 +37,13 @@ QT_MOC_LITERAL(1, 10, 10), // "mapClicked" QT_MOC_LITERAL(2, 21, 0), // "" QT_MOC_LITERAL(3, 22, 3), // "lng" QT_MOC_LITERAL(4, 26, 3), // "lat" -QT_MOC_LITERAL(5, 30, 7), // "onClick" -QT_MOC_LITERAL(6, 38, 10) // "onMapReady" +QT_MOC_LITERAL(5, 30, 8), // "mapReady" +QT_MOC_LITERAL(6, 39, 7), // "onClick" +QT_MOC_LITERAL(7, 47, 10) // "onMapReady" }, - "MapBridge\0mapClicked\0\0lng\0lat\0onClick\0" - "onMapReady" + "MapBridge\0mapClicked\0\0lng\0lat\0mapReady\0" + "onClick\0onMapReady" }; #undef QT_MOC_LITERAL @@ -52,22 +53,24 @@ static const uint qt_meta_data_MapBridge[] = { 8, // revision 0, // classname 0, 0, // classinfo - 3, 14, // methods + 4, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags - 1, // signalCount + 2, // signalCount // signals: name, argc, parameters, tag, flags - 1, 2, 29, 2, 0x06 /* Public */, + 1, 2, 34, 2, 0x06 /* Public */, + 5, 0, 39, 2, 0x06 /* Public */, // slots: name, argc, parameters, tag, flags - 5, 2, 34, 2, 0x0a /* Public */, - 6, 0, 39, 2, 0x0a /* Public */, + 6, 2, 40, 2, 0x0a /* Public */, + 7, 0, 45, 2, 0x0a /* Public */, // signals: parameters QMetaType::Void, QMetaType::Double, QMetaType::Double, 3, 4, + QMetaType::Void, // slots: parameters QMetaType::Void, QMetaType::Double, QMetaType::Double, 3, 4, @@ -83,8 +86,9 @@ void MapBridge::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, v (void)_t; switch (_id) { case 0: _t->mapClicked((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; - case 1: _t->onClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; - case 2: _t->onMapReady(); break; + case 1: _t->mapReady(); break; + case 2: _t->onClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; + case 3: _t->onMapReady(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { @@ -96,6 +100,13 @@ void MapBridge::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, v return; } } + { + using _t = void (MapBridge::*)(); + if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&MapBridge::mapReady)) { + *result = 1; + return; + } + } } } @@ -128,13 +139,13 @@ int MapBridge::qt_metacall(QMetaObject::Call _c, int _id, void **_a) if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) + if (_id < 4) qt_static_metacall(this, _c, _id, _a); - _id -= 3; + _id -= 4; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) + if (_id < 4) *reinterpret_cast(_a[0]) = -1; - _id -= 3; + _id -= 4; } return _id; } @@ -145,5 +156,11 @@ void MapBridge::mapClicked(double _t1, double _t2) void *_a[] = { nullptr, const_cast(reinterpret_cast(std::addressof(_t1))), const_cast(reinterpret_cast(std::addressof(_t2))) }; QMetaObject::activate(this, &staticMetaObject, 0, _a); } + +// SIGNAL 1 +void MapBridge::mapReady() +{ + QMetaObject::activate(this, &staticMetaObject, 1, nullptr); +} QT_WARNING_POP QT_END_MOC_NAMESPACE diff --git a/build/moc_mapbridge.o b/build/moc_mapbridge.o index 89e5e05..595fa7a 100644 Binary files a/build/moc_mapbridge.o and b/build/moc_mapbridge.o differ diff --git a/build/moc_mappage.cpp b/build/moc_mappage.cpp index a679c2a..de875a9 100644 --- a/build/moc_mappage.cpp +++ b/build/moc_mappage.cpp @@ -10,6 +10,7 @@ #include "../Src/pages/mappage.h" #include #include +#include #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file 'mappage.h' doesn't include ." #elif Q_MOC_OUTPUT_REVISION != 67 @@ -378,8 +379,8 @@ int PathPlanningDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) return _id; } struct qt_meta_stringdata_AreaCoverageDialog_t { - QByteArrayData data[12]; - char stringdata0[132]; + QByteArrayData data[17]; + char stringdata0[226]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ @@ -389,23 +390,30 @@ struct qt_meta_stringdata_AreaCoverageDialog_t { static const qt_meta_stringdata_AreaCoverageDialog_t qt_meta_stringdata_AreaCoverageDialog = { { QT_MOC_LITERAL(0, 0, 18), // "AreaCoverageDialog" -QT_MOC_LITERAL(1, 19, 14), // "onShapeChanged" -QT_MOC_LITERAL(2, 34, 0), // "" -QT_MOC_LITERAL(3, 35, 5), // "index" -QT_MOC_LITERAL(4, 41, 9), // "addVertex" -QT_MOC_LITERAL(5, 51, 12), // "removeVertex" -QT_MOC_LITERAL(6, 64, 17), // "selectVertexOnMap" -QT_MOC_LITERAL(7, 82, 16), // "planCoveragePath" -QT_MOC_LITERAL(8, 99, 13), // "clearCoverage" -QT_MOC_LITERAL(9, 113, 10), // "onMapClick" -QT_MOC_LITERAL(10, 124, 3), // "lng" -QT_MOC_LITERAL(11, 128, 3) // "lat" +QT_MOC_LITERAL(1, 19, 16), // "planCoveragePath" +QT_MOC_LITERAL(2, 36, 0), // "" +QT_MOC_LITERAL(3, 37, 13), // "clearCoverage" +QT_MOC_LITERAL(4, 51, 10), // "onMapClick" +QT_MOC_LITERAL(5, 62, 3), // "lng" +QT_MOC_LITERAL(6, 66, 3), // "lat" +QT_MOC_LITERAL(7, 70, 19), // "onDroneCountChanged" +QT_MOC_LITERAL(8, 90, 5), // "value" +QT_MOC_LITERAL(9, 96, 18), // "onSelectAllThreats" +QT_MOC_LITERAL(10, 115, 19), // "onSelectNoneThreats" +QT_MOC_LITERAL(11, 135, 16), // "onRefreshThreats" +QT_MOC_LITERAL(12, 152, 18), // "onPathDroneChanged" +QT_MOC_LITERAL(13, 171, 5), // "index" +QT_MOC_LITERAL(14, 177, 15), // "onPlayAnimation" +QT_MOC_LITERAL(15, 193, 15), // "onStopAnimation" +QT_MOC_LITERAL(16, 209, 16) // "onResetAnimation" }, - "AreaCoverageDialog\0onShapeChanged\0\0" - "index\0addVertex\0removeVertex\0" - "selectVertexOnMap\0planCoveragePath\0" - "clearCoverage\0onMapClick\0lng\0lat" + "AreaCoverageDialog\0planCoveragePath\0" + "\0clearCoverage\0onMapClick\0lng\0lat\0" + "onDroneCountChanged\0value\0onSelectAllThreats\0" + "onSelectNoneThreats\0onRefreshThreats\0" + "onPathDroneChanged\0index\0onPlayAnimation\0" + "onStopAnimation\0onResetAnimation" }; #undef QT_MOC_LITERAL @@ -415,7 +423,7 @@ static const uint qt_meta_data_AreaCoverageDialog[] = { 8, // revision 0, // classname 0, 0, // classinfo - 7, 14, // methods + 11, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors @@ -423,22 +431,30 @@ static const uint qt_meta_data_AreaCoverageDialog[] = { 0, // signalCount // slots: name, argc, parameters, tag, flags - 1, 1, 49, 2, 0x08 /* Private */, - 4, 0, 52, 2, 0x08 /* Private */, - 5, 0, 53, 2, 0x08 /* Private */, - 6, 0, 54, 2, 0x08 /* Private */, - 7, 0, 55, 2, 0x08 /* Private */, - 8, 0, 56, 2, 0x08 /* Private */, - 9, 2, 57, 2, 0x08 /* Private */, + 1, 0, 69, 2, 0x08 /* Private */, + 3, 0, 70, 2, 0x08 /* Private */, + 4, 2, 71, 2, 0x08 /* Private */, + 7, 1, 76, 2, 0x08 /* Private */, + 9, 0, 79, 2, 0x08 /* Private */, + 10, 0, 80, 2, 0x08 /* Private */, + 11, 0, 81, 2, 0x08 /* Private */, + 12, 1, 82, 2, 0x08 /* Private */, + 14, 0, 85, 2, 0x08 /* Private */, + 15, 0, 86, 2, 0x08 /* Private */, + 16, 0, 87, 2, 0x08 /* Private */, // slots: parameters - QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, + QMetaType::Void, QMetaType::Double, QMetaType::Double, 5, 6, + QMetaType::Void, QMetaType::Int, 8, + QMetaType::Void, + QMetaType::Void, + QMetaType::Void, + QMetaType::Void, QMetaType::Int, 13, QMetaType::Void, QMetaType::Void, QMetaType::Void, - QMetaType::Void, QMetaType::Double, QMetaType::Double, 10, 11, 0 // eod }; @@ -449,13 +465,17 @@ void AreaCoverageDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, i auto *_t = static_cast(_o); (void)_t; switch (_id) { - case 0: _t->onShapeChanged((*reinterpret_cast< int(*)>(_a[1]))); break; - case 1: _t->addVertex(); break; - case 2: _t->removeVertex(); break; - case 3: _t->selectVertexOnMap(); break; - case 4: _t->planCoveragePath(); break; - case 5: _t->clearCoverage(); break; - case 6: _t->onMapClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; + case 0: _t->planCoveragePath(); break; + case 1: _t->clearCoverage(); break; + case 2: _t->onMapClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; + case 3: _t->onDroneCountChanged((*reinterpret_cast< int(*)>(_a[1]))); break; + case 4: _t->onSelectAllThreats(); break; + case 5: _t->onSelectNoneThreats(); break; + case 6: _t->onRefreshThreats(); break; + case 7: _t->onPathDroneChanged((*reinterpret_cast< int(*)>(_a[1]))); break; + case 8: _t->onPlayAnimation(); break; + case 9: _t->onStopAnimation(); break; + case 10: _t->onResetAnimation(); break; default: ; } } @@ -490,13 +510,13 @@ int AreaCoverageDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 7) + if (_id < 11) qt_static_metacall(this, _c, _id, _a); - _id -= 7; + _id -= 11; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 7) + if (_id < 11) *reinterpret_cast(_a[0]) = -1; - _id -= 7; + _id -= 11; } return _id; } @@ -595,8 +615,8 @@ int LocateDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) return _id; } struct qt_meta_stringdata_MapPage_t { - QByteArrayData data[48]; - char stringdata0[662]; + QByteArrayData data[60]; + char stringdata0[869]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ @@ -616,60 +636,78 @@ QT_MOC_LITERAL(7, 92, 21), // "areaCoverageRequested" QT_MOC_LITERAL(8, 114, 10), // "mapClicked" QT_MOC_LITERAL(9, 125, 3), // "lng" QT_MOC_LITERAL(10, 129, 3), // "lat" -QT_MOC_LITERAL(11, 133, 15), // "onHeightChanged" -QT_MOC_LITERAL(12, 149, 20), // "onDownloadMapClicked" -QT_MOC_LITERAL(13, 170, 18), // "onSetThreatClicked" -QT_MOC_LITERAL(14, 189, 21), // "onPathPlanningClicked" -QT_MOC_LITERAL(15, 211, 21), // "onAreaCoverageClicked" -QT_MOC_LITERAL(16, 233, 18), // "onSearchMapClicked" -QT_MOC_LITERAL(17, 252, 16), // "onConsoleMessage" -QT_MOC_LITERAL(18, 269, 45), // "QWebEnginePage::JavaScriptCon..." -QT_MOC_LITERAL(19, 315, 5), // "level" -QT_MOC_LITERAL(20, 321, 7), // "message" -QT_MOC_LITERAL(21, 329, 10), // "lineNumber" -QT_MOC_LITERAL(22, 340, 8), // "sourceID" -QT_MOC_LITERAL(23, 349, 12), // "onPageLoaded" -QT_MOC_LITERAL(24, 362, 2), // "ok" -QT_MOC_LITERAL(25, 365, 16), // "addClickListener" -QT_MOC_LITERAL(26, 382, 19), // "removeClickListener" -QT_MOC_LITERAL(27, 402, 14), // "handleMapClick" -QT_MOC_LITERAL(28, 417, 13), // "visualizePath" -QT_MOC_LITERAL(29, 431, 8), // "pathData" -QT_MOC_LITERAL(30, 440, 17), // "clearPathOverlays" -QT_MOC_LITERAL(31, 458, 16), // "runMapJavaScript" -QT_MOC_LITERAL(32, 475, 2), // "js" -QT_MOC_LITERAL(33, 478, 8), // "parseLng" -QT_MOC_LITERAL(34, 487, 5), // "coord" -QT_MOC_LITERAL(35, 493, 8), // "parseLat" -QT_MOC_LITERAL(36, 502, 10), // "showMarker" -QT_MOC_LITERAL(37, 513, 5), // "label" -QT_MOC_LITERAL(38, 519, 5), // "color" -QT_MOC_LITERAL(39, 525, 5), // "index" -QT_MOC_LITERAL(40, 531, 21), // "visualizeCoveragePath" -QT_MOC_LITERAL(41, 553, 21), // "clearCoverageOverlays" -QT_MOC_LITERAL(42, 575, 17), // "enableDrawingMode" -QT_MOC_LITERAL(43, 593, 5), // "shape" -QT_MOC_LITERAL(44, 599, 18), // "disableDrawingMode" -QT_MOC_LITERAL(45, 618, 16), // "addThreatOverlay" -QT_MOC_LITERAL(46, 635, 6), // "params" -QT_MOC_LITERAL(47, 642, 19) // "removeThreatOverlay" +QT_MOC_LITERAL(11, 133, 8), // "mapReady" +QT_MOC_LITERAL(12, 142, 15), // "onHeightChanged" +QT_MOC_LITERAL(13, 158, 20), // "onDownloadMapClicked" +QT_MOC_LITERAL(14, 179, 18), // "onSetThreatClicked" +QT_MOC_LITERAL(15, 198, 21), // "onPathPlanningClicked" +QT_MOC_LITERAL(16, 220, 21), // "onAreaCoverageClicked" +QT_MOC_LITERAL(17, 242, 18), // "onSearchMapClicked" +QT_MOC_LITERAL(18, 261, 16), // "onConsoleMessage" +QT_MOC_LITERAL(19, 278, 45), // "QWebEnginePage::JavaScriptCon..." +QT_MOC_LITERAL(20, 324, 5), // "level" +QT_MOC_LITERAL(21, 330, 7), // "message" +QT_MOC_LITERAL(22, 338, 10), // "lineNumber" +QT_MOC_LITERAL(23, 349, 8), // "sourceID" +QT_MOC_LITERAL(24, 358, 12), // "onPageLoaded" +QT_MOC_LITERAL(25, 371, 2), // "ok" +QT_MOC_LITERAL(26, 374, 13), // "loadSavedPath" +QT_MOC_LITERAL(27, 388, 16), // "onMapReadyFromJS" +QT_MOC_LITERAL(28, 405, 16), // "addClickListener" +QT_MOC_LITERAL(29, 422, 19), // "removeClickListener" +QT_MOC_LITERAL(30, 442, 14), // "handleMapClick" +QT_MOC_LITERAL(31, 457, 13), // "visualizePath" +QT_MOC_LITERAL(32, 471, 8), // "pathData" +QT_MOC_LITERAL(33, 480, 27), // "visualizeCoverageMultiPaths" +QT_MOC_LITERAL(34, 508, 14), // "multiPathsJson" +QT_MOC_LITERAL(35, 523, 17), // "clearPathOverlays" +QT_MOC_LITERAL(36, 541, 16), // "runMapJavaScript" +QT_MOC_LITERAL(37, 558, 2), // "js" +QT_MOC_LITERAL(38, 561, 8), // "parseLng" +QT_MOC_LITERAL(39, 570, 5), // "coord" +QT_MOC_LITERAL(40, 576, 8), // "parseLat" +QT_MOC_LITERAL(41, 585, 10), // "showMarker" +QT_MOC_LITERAL(42, 596, 5), // "label" +QT_MOC_LITERAL(43, 602, 5), // "color" +QT_MOC_LITERAL(44, 608, 5), // "index" +QT_MOC_LITERAL(45, 614, 21), // "visualizeCoveragePath" +QT_MOC_LITERAL(46, 636, 21), // "clearCoverageOverlays" +QT_MOC_LITERAL(47, 658, 27), // "visualizeCoverageAreaCircle" +QT_MOC_LITERAL(48, 686, 9), // "centerLng" +QT_MOC_LITERAL(49, 696, 9), // "centerLat" +QT_MOC_LITERAL(50, 706, 8), // "radiusKm" +QT_MOC_LITERAL(51, 715, 28), // "visualizeCoverageAreaPolygon" +QT_MOC_LITERAL(52, 744, 28), // "QList >" +QT_MOC_LITERAL(53, 773, 8), // "vertices" +QT_MOC_LITERAL(54, 782, 17), // "enableDrawingMode" +QT_MOC_LITERAL(55, 800, 5), // "shape" +QT_MOC_LITERAL(56, 806, 18), // "disableDrawingMode" +QT_MOC_LITERAL(57, 825, 16), // "addThreatOverlay" +QT_MOC_LITERAL(58, 842, 6), // "params" +QT_MOC_LITERAL(59, 849, 19) // "removeThreatOverlay" }, "MapPage\0heightChanged\0\0height\0" "downloadMapRequested\0setThreatRequested\0" "pathPlanningRequested\0areaCoverageRequested\0" - "mapClicked\0lng\0lat\0onHeightChanged\0" + "mapClicked\0lng\0lat\0mapReady\0onHeightChanged\0" "onDownloadMapClicked\0onSetThreatClicked\0" "onPathPlanningClicked\0onAreaCoverageClicked\0" "onSearchMapClicked\0onConsoleMessage\0" "QWebEnginePage::JavaScriptConsoleMessageLevel\0" "level\0message\0lineNumber\0sourceID\0" - "onPageLoaded\0ok\0addClickListener\0" + "onPageLoaded\0ok\0loadSavedPath\0" + "onMapReadyFromJS\0addClickListener\0" "removeClickListener\0handleMapClick\0" - "visualizePath\0pathData\0clearPathOverlays\0" - "runMapJavaScript\0js\0parseLng\0coord\0" - "parseLat\0showMarker\0label\0color\0index\0" - "visualizeCoveragePath\0clearCoverageOverlays\0" + "visualizePath\0pathData\0" + "visualizeCoverageMultiPaths\0multiPathsJson\0" + "clearPathOverlays\0runMapJavaScript\0" + "js\0parseLng\0coord\0parseLat\0showMarker\0" + "label\0color\0index\0visualizeCoveragePath\0" + "clearCoverageOverlays\0visualizeCoverageAreaCircle\0" + "centerLng\0centerLat\0radiusKm\0" + "visualizeCoverageAreaPolygon\0" + "QList >\0vertices\0" "enableDrawingMode\0shape\0disableDrawingMode\0" "addThreatOverlay\0params\0removeThreatOverlay" }; @@ -681,45 +719,51 @@ static const uint qt_meta_data_MapPage[] = { 8, // revision 0, // classname 0, 0, // classinfo - 29, 14, // methods + 35, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags - 6, // signalCount + 7, // signalCount // signals: name, argc, parameters, tag, flags - 1, 1, 159, 2, 0x06 /* Public */, - 4, 0, 162, 2, 0x06 /* Public */, - 5, 0, 163, 2, 0x06 /* Public */, - 6, 0, 164, 2, 0x06 /* Public */, - 7, 0, 165, 2, 0x06 /* Public */, - 8, 2, 166, 2, 0x06 /* Public */, + 1, 1, 189, 2, 0x06 /* Public */, + 4, 0, 192, 2, 0x06 /* Public */, + 5, 0, 193, 2, 0x06 /* Public */, + 6, 0, 194, 2, 0x06 /* Public */, + 7, 0, 195, 2, 0x06 /* Public */, + 8, 2, 196, 2, 0x06 /* Public */, + 11, 0, 201, 2, 0x06 /* Public */, // slots: name, argc, parameters, tag, flags - 11, 0, 171, 2, 0x08 /* Private */, - 12, 0, 172, 2, 0x08 /* Private */, - 13, 0, 173, 2, 0x08 /* Private */, - 14, 0, 174, 2, 0x08 /* Private */, - 15, 0, 175, 2, 0x08 /* Private */, - 16, 0, 176, 2, 0x08 /* Private */, - 17, 4, 177, 2, 0x08 /* Private */, - 23, 1, 186, 2, 0x08 /* Private */, - 25, 0, 189, 2, 0x0a /* Public */, - 26, 0, 190, 2, 0x0a /* Public */, - 27, 2, 191, 2, 0x0a /* Public */, - 28, 1, 196, 2, 0x0a /* Public */, - 30, 0, 199, 2, 0x0a /* Public */, - 31, 1, 200, 2, 0x0a /* Public */, - 33, 1, 203, 2, 0x0a /* Public */, - 35, 1, 206, 2, 0x0a /* Public */, - 36, 5, 209, 2, 0x0a /* Public */, - 40, 1, 220, 2, 0x0a /* Public */, - 41, 0, 223, 2, 0x0a /* Public */, - 42, 1, 224, 2, 0x0a /* Public */, - 44, 0, 227, 2, 0x0a /* Public */, - 45, 2, 228, 2, 0x0a /* Public */, - 47, 1, 233, 2, 0x0a /* Public */, + 12, 0, 202, 2, 0x08 /* Private */, + 13, 0, 203, 2, 0x08 /* Private */, + 14, 0, 204, 2, 0x08 /* Private */, + 15, 0, 205, 2, 0x08 /* Private */, + 16, 0, 206, 2, 0x08 /* Private */, + 17, 0, 207, 2, 0x08 /* Private */, + 18, 4, 208, 2, 0x08 /* Private */, + 24, 1, 217, 2, 0x08 /* Private */, + 26, 0, 220, 2, 0x08 /* Private */, + 27, 0, 221, 2, 0x08 /* Private */, + 28, 0, 222, 2, 0x0a /* Public */, + 29, 0, 223, 2, 0x0a /* Public */, + 30, 2, 224, 2, 0x0a /* Public */, + 31, 1, 229, 2, 0x0a /* Public */, + 33, 1, 232, 2, 0x0a /* Public */, + 35, 0, 235, 2, 0x0a /* Public */, + 36, 1, 236, 2, 0x0a /* Public */, + 38, 1, 239, 2, 0x0a /* Public */, + 40, 1, 242, 2, 0x0a /* Public */, + 41, 5, 245, 2, 0x0a /* Public */, + 45, 1, 256, 2, 0x0a /* Public */, + 46, 0, 259, 2, 0x0a /* Public */, + 47, 3, 260, 2, 0x0a /* Public */, + 51, 1, 267, 2, 0x0a /* Public */, + 54, 1, 270, 2, 0x0a /* Public */, + 56, 0, 273, 2, 0x0a /* Public */, + 57, 2, 274, 2, 0x0a /* Public */, + 59, 1, 279, 2, 0x0a /* Public */, // signals: parameters QMetaType::Void, QMetaType::QString, 3, @@ -728,6 +772,7 @@ static const uint qt_meta_data_MapPage[] = { QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Double, QMetaType::Double, 9, 10, + QMetaType::Void, // slots: parameters QMetaType::Void, @@ -736,23 +781,28 @@ static const uint qt_meta_data_MapPage[] = { QMetaType::Void, QMetaType::Void, QMetaType::Void, - QMetaType::Void, 0x80000000 | 18, QMetaType::QString, QMetaType::Int, QMetaType::QString, 19, 20, 21, 22, - QMetaType::Void, QMetaType::Bool, 24, + QMetaType::Void, 0x80000000 | 19, QMetaType::QString, QMetaType::Int, QMetaType::QString, 20, 21, 22, 23, + QMetaType::Void, QMetaType::Bool, 25, + QMetaType::Void, + QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Double, QMetaType::Double, 9, 10, - QMetaType::Void, QMetaType::QString, 29, + QMetaType::Void, QMetaType::QString, 32, + QMetaType::Void, QMetaType::QString, 34, QMetaType::Void, + QMetaType::Void, QMetaType::QString, 37, + QMetaType::Double, QMetaType::QString, 39, + QMetaType::Double, QMetaType::QString, 39, + QMetaType::Void, QMetaType::Double, QMetaType::Double, QMetaType::QString, QMetaType::QString, QMetaType::Int, 9, 10, 42, 43, 44, QMetaType::Void, QMetaType::QString, 32, - QMetaType::Double, QMetaType::QString, 34, - QMetaType::Double, QMetaType::QString, 34, - QMetaType::Void, QMetaType::Double, QMetaType::Double, QMetaType::QString, QMetaType::QString, QMetaType::Int, 9, 10, 37, 38, 39, - QMetaType::Void, QMetaType::QString, 29, QMetaType::Void, - QMetaType::Void, QMetaType::QString, 43, + QMetaType::Void, QMetaType::Double, QMetaType::Double, QMetaType::Double, 48, 49, 50, + QMetaType::Void, 0x80000000 | 52, 53, + QMetaType::Void, QMetaType::QString, 55, QMetaType::Void, - QMetaType::Void, QMetaType::QString, QMetaType::QVariantMap, 43, 46, - QMetaType::Void, QMetaType::Int, 39, + QMetaType::Void, QMetaType::QString, QMetaType::QVariantMap, 55, 58, + QMetaType::Void, QMetaType::Int, 44, 0 // eod }; @@ -769,31 +819,37 @@ void MapPage::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, voi case 3: _t->pathPlanningRequested(); break; case 4: _t->areaCoverageRequested(); break; case 5: _t->mapClicked((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; - case 6: _t->onHeightChanged(); break; - case 7: _t->onDownloadMapClicked(); break; - case 8: _t->onSetThreatClicked(); break; - case 9: _t->onPathPlanningClicked(); break; - case 10: _t->onAreaCoverageClicked(); break; - case 11: _t->onSearchMapClicked(); break; - case 12: _t->onConsoleMessage((*reinterpret_cast< QWebEnginePage::JavaScriptConsoleMessageLevel(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4]))); break; - case 13: _t->onPageLoaded((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 14: _t->addClickListener(); break; - case 15: _t->removeClickListener(); break; - case 16: _t->handleMapClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; - case 17: _t->visualizePath((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 18: _t->clearPathOverlays(); break; - case 19: _t->runMapJavaScript((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 20: { double _r = _t->parseLng((*reinterpret_cast< const QString(*)>(_a[1]))); + case 6: _t->mapReady(); break; + case 7: _t->onHeightChanged(); break; + case 8: _t->onDownloadMapClicked(); break; + case 9: _t->onSetThreatClicked(); break; + case 10: _t->onPathPlanningClicked(); break; + case 11: _t->onAreaCoverageClicked(); break; + case 12: _t->onSearchMapClicked(); break; + case 13: _t->onConsoleMessage((*reinterpret_cast< QWebEnginePage::JavaScriptConsoleMessageLevel(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4]))); break; + case 14: _t->onPageLoaded((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 15: _t->loadSavedPath(); break; + case 16: _t->onMapReadyFromJS(); break; + case 17: _t->addClickListener(); break; + case 18: _t->removeClickListener(); break; + case 19: _t->handleMapClick((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break; + case 20: _t->visualizePath((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 21: _t->visualizeCoverageMultiPaths((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 22: _t->clearPathOverlays(); break; + case 23: _t->runMapJavaScript((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 24: { double _r = _t->parseLng((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< double*>(_a[0]) = std::move(_r); } break; - case 21: { double _r = _t->parseLat((*reinterpret_cast< const QString(*)>(_a[1]))); + case 25: { double _r = _t->parseLat((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< double*>(_a[0]) = std::move(_r); } break; - case 22: _t->showMarker((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; - case 23: _t->visualizeCoveragePath((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 24: _t->clearCoverageOverlays(); break; - case 25: _t->enableDrawingMode((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 26: _t->disableDrawingMode(); break; - case 27: _t->addThreatOverlay((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QVariantMap(*)>(_a[2]))); break; - case 28: _t->removeThreatOverlay((*reinterpret_cast< int(*)>(_a[1]))); break; + case 26: _t->showMarker((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; + case 27: _t->visualizeCoveragePath((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 28: _t->clearCoverageOverlays(); break; + case 29: _t->visualizeCoverageAreaCircle((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2])),(*reinterpret_cast< double(*)>(_a[3]))); break; + case 30: _t->visualizeCoverageAreaPolygon((*reinterpret_cast< const QList >(*)>(_a[1]))); break; + case 31: _t->enableDrawingMode((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 32: _t->disableDrawingMode(); break; + case 33: _t->addThreatOverlay((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QVariantMap(*)>(_a[2]))); break; + case 34: _t->removeThreatOverlay((*reinterpret_cast< int(*)>(_a[1]))); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { @@ -840,6 +896,13 @@ void MapPage::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, voi return; } } + { + using _t = void (MapPage::*)(); + if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&MapPage::mapReady)) { + *result = 6; + return; + } + } } } @@ -872,13 +935,13 @@ int MapPage::qt_metacall(QMetaObject::Call _c, int _id, void **_a) if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 29) + if (_id < 35) qt_static_metacall(this, _c, _id, _a); - _id -= 29; + _id -= 35; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 29) + if (_id < 35) *reinterpret_cast(_a[0]) = -1; - _id -= 29; + _id -= 35; } return _id; } @@ -920,5 +983,11 @@ void MapPage::mapClicked(double _t1, double _t2) void *_a[] = { nullptr, const_cast(reinterpret_cast(std::addressof(_t1))), const_cast(reinterpret_cast(std::addressof(_t2))) }; QMetaObject::activate(this, &staticMetaObject, 5, _a); } + +// SIGNAL 6 +void MapPage::mapReady() +{ + QMetaObject::activate(this, &staticMetaObject, 6, nullptr); +} QT_WARNING_POP QT_END_MOC_NAMESPACE diff --git a/build/moc_mappage.o b/build/moc_mappage.o index 1c5e7fc..49bc00d 100644 Binary files a/build/moc_mappage.o and b/build/moc_mappage.o differ diff --git a/build/moc_taskdecisionpage.o b/build/moc_taskdecisionpage.o index 07e48a9..2eeb2ef 100644 Binary files a/build/moc_taskdecisionpage.o and b/build/moc_taskdecisionpage.o differ diff --git a/build/taskdecisionpage.o b/build/taskdecisionpage.o index 6d6a6cc..0ab544e 100644 Binary files a/build/taskdecisionpage.o and b/build/taskdecisionpage.o differ diff --git a/drone_ui.pro.user b/drone_ui.pro.user new file mode 100644 index 0000000..4a85a78 --- /dev/null +++ b/drone_ui.pro.user @@ -0,0 +1,271 @@ + + + + + + EnvironmentId + {61775fbd-350d-43bb-8b00-1b514168d3f0} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + true + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 0 + 80 + true + true + 1 + 0 + false + true + false + 2 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + false + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 10 + true + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 5.15.2 GCC 64bit + Desktop Qt 5.15.2 GCC 64bit + qt.qt5.5152.gcc_64_kit + 0 + 0 + 0 + + 0 + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Debug + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Debug + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + + + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Release + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Release + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + + + 0 + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Profile + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Profile + + + true + QtProjectManager.QMakeBuildStep + false + + + + true + Qt4ProjectManager.MakeStep + + 2 + 构建 + 构建 + ProjectExplorer.BuildSteps.Build + + + + true + Qt4ProjectManager.MakeStep + clean + + 1 + 清除 + 清除 + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + Qt4ProjectManager.Qt4BuildConfiguration + 0 + 0 + 0 + + 3 + + + 0 + 部署 + 部署 + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph dwarf,4096 -F 250 + + Qt4ProjectManager.Qt4RunConfiguration: + /home/chenxiaofu/DRONE/Drone_project/drone_ui.pro + false + true + true + true + /home/chenxiaofu/DRONE/Drone_project/build/Desktop_Qt_5_15_2_GCC_64bit-Debug + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + +