From bc199244a3370d5bb7d3f52d5c17e6e2c467f20a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E5=A2=9E=E8=BE=89?= <3045316072@qq.com>
Date: Mon, 13 Oct 2025 13:49:55 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 +
.../Manual-Label-Tool-Widget.vcxproj | 119 +++++++++++++++++
.../Manual-Label-Tool-Widget.vcxproj.filters | 41 ++++++
.../ManualLabelToolWidget.cpp | 63 +++++++++
.../ManualLabelToolWidget.h | 37 ++++++
.../ManualLabelToolWidget.qrc | 4 +
Manual-Label-Tool-Widget/main.cpp | 27 ++++
Manual-Label-Tool-Widget/symbology-style.db | Bin 0 -> 86016 bytes
.../Manual-Labeling-Client.sln | 31 +++++
.../Manual-Labeling-Client.vcxproj | 122 ++++++++++++++++++
.../Manual-Labeling-Client.vcxproj.filters | 50 +++++++
.../ManualLabelingClient.cpp | 12 ++
Manual-Labeling-Client/ManualLabelingClient.h | 17 +++
.../ManualLabelingClient.qrc | 4 +
.../ManualLabelingClient.ui | 29 +++++
Manual-Labeling-Client/main.cpp | 11 ++
Manual-Labeling-Client/stdafx.cpp | 1 +
Manual-Labeling-Client/stdafx.h | 1 +
18 files changed, 571 insertions(+)
create mode 100644 Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj
create mode 100644 Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj.filters
create mode 100644 Manual-Label-Tool-Widget/ManualLabelToolWidget.cpp
create mode 100644 Manual-Label-Tool-Widget/ManualLabelToolWidget.h
create mode 100644 Manual-Label-Tool-Widget/ManualLabelToolWidget.qrc
create mode 100644 Manual-Label-Tool-Widget/main.cpp
create mode 100644 Manual-Label-Tool-Widget/symbology-style.db
create mode 100644 Manual-Labeling-Client/Manual-Labeling-Client.sln
create mode 100644 Manual-Labeling-Client/Manual-Labeling-Client.vcxproj
create mode 100644 Manual-Labeling-Client/Manual-Labeling-Client.vcxproj.filters
create mode 100644 Manual-Labeling-Client/ManualLabelingClient.cpp
create mode 100644 Manual-Labeling-Client/ManualLabelingClient.h
create mode 100644 Manual-Labeling-Client/ManualLabelingClient.qrc
create mode 100644 Manual-Labeling-Client/ManualLabelingClient.ui
create mode 100644 Manual-Labeling-Client/main.cpp
create mode 100644 Manual-Labeling-Client/stdafx.cpp
create mode 100644 Manual-Labeling-Client/stdafx.h
diff --git a/.gitignore b/.gitignore
index 4ccd6fa..16cb3ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -662,3 +662,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
+**/**/x64
+**/**/.vs
\ No newline at end of file
diff --git a/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj b/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj
new file mode 100644
index 0000000..a1e4dca
--- /dev/null
+++ b/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj
@@ -0,0 +1,119 @@
+
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ {89CAC2D1-AF91-42BC-BDE1-2BC8C490CE7A}
+ QtVS_v304
+ 10.0
+ 10.0
+ $(MSBuildProjectDirectory)\QtMsBuild
+
+
+
+ Application
+ v143
+ true
+ Unicode
+
+
+ Application
+ v143
+ false
+ true
+ Unicode
+
+
+
+
+
+
+ qgis_qt5
+ core;gui;widgets
+ debug
+
+
+ tools_qt5
+ core;xml;gui;widgets
+ release
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ D:\OSGeo4W\apps\qgis-dev\include;D:\OSGeo4W\include;$(IncludePath)
+ D:\OSGeo4W\lib;D:\OSGeo4W\apps\qgis-dev\lib;$(ReferencePath)
+ D:\OSGeo4W\lib;D:\OSGeo4W\apps\qgis-dev\lib;$(LibraryPath)
+
+
+
+ qgis_core.lib;qgis_app.lib;qgis_gui.lib;%(AdditionalDependencies)
+
+
+ _USE_MATH_DEFINES;_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING;%(PreprocessorDefinitions)
+ stdcpp17
+
+
+
+
+ true
+ Level3
+ true
+ true
+
+
+ Windows
+ true
+
+
+
+
+ true
+ Level3
+ true
+ true
+ true
+ true
+
+
+ Windows
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj.filters b/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj.filters
new file mode 100644
index 0000000..81ae6d6
--- /dev/null
+++ b/Manual-Label-Tool-Widget/Manual-Label-Tool-Widget.vcxproj.filters
@@ -0,0 +1,41 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {99349809-55BA-4b9d-BF79-8FDBB0286EB3}
+ ui
+
+
+ {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}
+ ts
+
+
+
+
+ Resource Files
+
+
+ Header Files
+
+
+ Source Files
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/Manual-Label-Tool-Widget/ManualLabelToolWidget.cpp b/Manual-Label-Tool-Widget/ManualLabelToolWidget.cpp
new file mode 100644
index 0000000..6b7744a
--- /dev/null
+++ b/Manual-Label-Tool-Widget/ManualLabelToolWidget.cpp
@@ -0,0 +1,63 @@
+#include "ManualLabelToolWidget.h"
+#include
+#include
+#include
+#include
+
+ManualLabelToolWidget::ManualLabelToolWidget(QWidget *parent)
+ : QMainWindow(parent)
+{
+ this->init_UI();
+
+}
+
+ManualLabelToolWidget::~ManualLabelToolWidget()
+{
+}
+
+void ManualLabelToolWidget::init_UI()
+{
+ // 1. inti map canvas
+ this->map_canvas = new QgsMapCanvas();
+ this->setCentralWidget((this->map_canvas));
+
+ // 2. map tool pan
+ this->map_tool_pan = new QgsMapToolPan(this->map_canvas);
+ this->map_canvas->setMapTool(this->map_tool_pan);
+
+ // 3. map layer manager
+ this->map_layerTreeView =new QgsLayerTreeView(this);
+ // 4. create map model
+ this->map_layerModel = new QgsLayerTreeModel(QgsProject::instance()->layerTreeRoot(), this);
+ this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeRename); // ÔÊÐíÖØÃüÃû
+ this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeReorder); // ÔÊÐíµ÷Õû˳Ðò
+ this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeChangeVisibility); // ÔÊÐí¸Ä±ä¿É¼ûÐÔ
+ this->map_layerModel->setFlag(QgsLayerTreeModel::ShowLegendAsTree); // ÒÔÊ÷״ͼÏÔʾͼÀý
+ this->map_layerModel->setAutoCollapseLegendNodes(10); // ×Ô¶¯ÕÛµþ¹ý¶àͼÀýÏî
+
+ this->map_layerTreeView->setModel(this->map_layerModel);
+ // create bridge between mapcontrol and layer
+ this->map_layer_Bridge = new QgsLayerTreeMapCanvasBridge(QgsProject::instance()->layerTreeRoot(), this->map_canvas, this);
+
+
+ // layer ²¼¾Ö
+ // 1. ´´½¨Ò»¸öQDockWidget£¨Í£¿¿´°¿Ú£©À´³ÐÔØÍ¼²ãÊ÷ÊÓͼ
+ this->layerTreeDock =new QDockWidget(tr(u8"ͼ²ã¹ÜÀíÆ÷"), this);
+ this->layerTreeDock->setWidget(this->map_layerTreeView);
+
+ // 2. ½«ÒÑÓеÄͼ²ãÊ÷ÊÓͼ(m_layerTreeView)ÉèÖÃΪÕâ¸öÍ£¿¿´°¿ÚµÄÖÐÐIJ¿¼þ
+ layerTreeDock->setWidget(this->map_layerTreeView);
+
+ // 3. (¿ÉÑ¡µ«ÍƼö)ÉèÖÃÍ£¿¿´°¿ÚÔÊÐíÍ£¿¿µÄÇøÓò
+ layerTreeDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+
+
+
+ // 5. ½«Í£¿¿´°¿ÚÌí¼Óµ½Ö÷´°¿ÚµÄ×ó²àÇøÓò
+ this->addDockWidget(Qt::LeftDockWidgetArea, this->layerTreeDock);
+
+
+
+
+}
+
diff --git a/Manual-Label-Tool-Widget/ManualLabelToolWidget.h b/Manual-Label-Tool-Widget/ManualLabelToolWidget.h
new file mode 100644
index 0000000..88d4e2f
--- /dev/null
+++ b/Manual-Label-Tool-Widget/ManualLabelToolWidget.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+class ManualLabelToolWidget : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ ManualLabelToolWidget(QWidget *parent = nullptr);
+ ~ManualLabelToolWidget();
+
+
+
+private: // UI
+ void init_UI();// Init UI
+
+private: // ×é¼þ
+ QgsMapCanvas* map_canvas=nullptr; // map widget
+ QgsMapToolPan* map_tool_pan = nullptr; // map tool for pan zoom
+
+ QgsLayerTreeModel* map_layerModel = nullptr;
+ QgsLayerTreeView* map_layerTreeView = nullptr;
+ QgsLayerTreeMapCanvasBridge* map_layer_Bridge = nullptr;
+
+private: // ²¼¾Ö
+ QDockWidget* layerTreeDock;
+
+
+};
+
diff --git a/Manual-Label-Tool-Widget/ManualLabelToolWidget.qrc b/Manual-Label-Tool-Widget/ManualLabelToolWidget.qrc
new file mode 100644
index 0000000..876730d
--- /dev/null
+++ b/Manual-Label-Tool-Widget/ManualLabelToolWidget.qrc
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Manual-Label-Tool-Widget/main.cpp b/Manual-Label-Tool-Widget/main.cpp
new file mode 100644
index 0000000..e3b1a43
--- /dev/null
+++ b/Manual-Label-Tool-Widget/main.cpp
@@ -0,0 +1,27 @@
+//#include "ManualLabelToolWidget.h"
+//#include
+//
+//int main(int argc, char *argv[])
+//{
+// QApplication app(argc, argv);
+// ManualLabelToolWidget window;
+// window.show();
+// return app.exec();
+//}
+#include
+#include
+
+#include
+#include
+#include
+#include "ManualLabelToolWidget.h"
+//ÕûÊýÀàÐÍÖ÷º¯Êý(ÕûÊýÀàÐÍͳ¼Æ²ÎÊý¸öÊý,×Ö·ûÀàÐÍÖ¸ÕëÊý×éÖ¸Ïò×Ö·û´®²ÎÊý)
+int main(int argc, char** argv)
+{
+ //QApplicationÓÐÇÒ½öÓÐÒ»¸öÓ¦ÓóÌÐòÀàµÄ¶ÔÏó
+ QApplication app(argc, argv);
+ ManualLabelToolWidget labeltoolwidget;
+ labeltoolwidget.show();
+ //µÈ´ýÓû§²Ù×÷
+ return app.exec();
+}
diff --git a/Manual-Label-Tool-Widget/symbology-style.db b/Manual-Label-Tool-Widget/symbology-style.db
new file mode 100644
index 0000000000000000000000000000000000000000..214fcf7ef0027f0765da4d4f8d92c5ef5c98b6e2
GIT binary patch
literal 86016
zcmeI%O>5go7{GCfnr^cWZ3@LGwvwjEv12QX
zOHaC${Vof8Ul#VhU#FBpFDq*-S!xiy_%!?tu|}h0o_T&VV`rG(UL0I_j(OG_bZyVv
zQL2inDnFT~qA2CyXF2$ZUgP_@=q9+TiE>u4tUUN*sZ{x*EY1I=R9;v9EB{&9EPXAH
zO1q_hi|yj)!r#S*h3mo(`G4}SbDwe_bIZXm@mb=Y!sLe_C38dSo@4mf37PIk3!W{k@BhxqsNS_N*iG*Q5PsjiVFu7wcr}((XED
z(|Xn18g<>UP`g^xjap6h*F=!_-P4}C)A8){uH7G|?v~QQQqS%Mf6z(c;xI>i-yqbo)aQEiNpk0>#ytF
zvf-agnz6X3UPbK&4V1ra@w?Ntc3lv_kHTi6Nflj-sRpCk@3v|lAMU?6w&Jz0b!PwG
z8;rLIleJUZE^5ZpHC4H|>^P(0l^Z;3+1Fk#yl+K;TJ@+@@~b)B*xpwC=V3>`oteWM
z75P-xZ#1>jZW{}D5ykli+bggNru21V{(C-~hGxj#J`aKQRs!z-M=(hNfd>r;T
zUbAswF4f<-dIsIC&uNCWp4HtrQmY;p@AOph>9HGjR;&i`ek;{YQ8$A=-oK?8k5{t#
zD8fX`@^;QOoj*`fB*srAbmAp!^>fB*srAb
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ {2F3ECF9F-10C1-4D1D-BB73-38D7C3835F73}
+ QtVS_v304
+ 10.0
+ 10.0
+ $(MSBuildProjectDirectory)\QtMsBuild
+
+
+
+ Application
+ v143
+ true
+ Unicode
+
+
+ Application
+ v143
+ false
+ true
+ Unicode
+
+
+
+
+
+
+ qgis_qt5
+ core;gui;widgets
+ debug
+
+
+ tools_qt5
+ core;gui;widgets
+ release
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ Use
+ stdafx.h
+ Level3
+ true
+ true
+
+
+ Windows
+ true
+
+
+ stdafx.h;%(PrependInclude)
+
+
+
+
+ true
+ Use
+ stdafx.h
+ Level3
+ true
+ true
+ true
+ true
+
+
+ Windows
+ false
+ true
+ true
+
+
+ stdafx.h;%(PrependInclude)
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual-Labeling-Client/Manual-Labeling-Client.vcxproj.filters b/Manual-Labeling-Client/Manual-Labeling-Client.vcxproj.filters
new file mode 100644
index 0000000..a021ac0
--- /dev/null
+++ b/Manual-Labeling-Client/Manual-Labeling-Client.vcxproj.filters
@@ -0,0 +1,50 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ qml;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ qrc;rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {99349809-55BA-4b9d-BF79-8FDBB0286EB3}
+ ui
+
+
+ {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}
+ ts
+
+
+
+
+ Resource Files
+
+
+ Form Files
+
+
+ Header Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Source Files
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/Manual-Labeling-Client/ManualLabelingClient.cpp b/Manual-Labeling-Client/ManualLabelingClient.cpp
new file mode 100644
index 0000000..ec607f4
--- /dev/null
+++ b/Manual-Labeling-Client/ManualLabelingClient.cpp
@@ -0,0 +1,12 @@
+#include "stdafx.h"
+#include "ManualLabelingClient.h"
+
+ManualLabelingClient::ManualLabelingClient(QWidget *parent)
+ : QMainWindow(parent)
+{
+ ui.setupUi(this);
+}
+
+ManualLabelingClient::~ManualLabelingClient()
+{}
+
diff --git a/Manual-Labeling-Client/ManualLabelingClient.h b/Manual-Labeling-Client/ManualLabelingClient.h
new file mode 100644
index 0000000..81f18b0
--- /dev/null
+++ b/Manual-Labeling-Client/ManualLabelingClient.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include
+#include "ui_ManualLabelingClient.h"
+
+class ManualLabelingClient : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ ManualLabelingClient(QWidget *parent = nullptr);
+ ~ManualLabelingClient();
+
+private:
+ Ui::ManualLabelingClientClass ui;
+};
+
diff --git a/Manual-Labeling-Client/ManualLabelingClient.qrc b/Manual-Labeling-Client/ManualLabelingClient.qrc
new file mode 100644
index 0000000..8df6f23
--- /dev/null
+++ b/Manual-Labeling-Client/ManualLabelingClient.qrc
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Manual-Labeling-Client/ManualLabelingClient.ui b/Manual-Labeling-Client/ManualLabelingClient.ui
new file mode 100644
index 0000000..7344599
--- /dev/null
+++ b/Manual-Labeling-Client/ManualLabelingClient.ui
@@ -0,0 +1,29 @@
+
+
+ ManualLabelingClientClass
+
+
+ ManualLabelingClientClass
+
+
+
+ 0
+ 0
+ 600
+ 400
+
+
+
+ ManualLabelingClient
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manual-Labeling-Client/main.cpp b/Manual-Labeling-Client/main.cpp
new file mode 100644
index 0000000..5b46cc4
--- /dev/null
+++ b/Manual-Labeling-Client/main.cpp
@@ -0,0 +1,11 @@
+#include "stdafx.h"
+#include "ManualLabelingClient.h"
+#include
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ ManualLabelingClient window;
+ window.show();
+ return app.exec();
+}
diff --git a/Manual-Labeling-Client/stdafx.cpp b/Manual-Labeling-Client/stdafx.cpp
new file mode 100644
index 0000000..fd4f341
--- /dev/null
+++ b/Manual-Labeling-Client/stdafx.cpp
@@ -0,0 +1 @@
+#include "stdafx.h"
diff --git a/Manual-Labeling-Client/stdafx.h b/Manual-Labeling-Client/stdafx.h
new file mode 100644
index 0000000..c3cbb7d
--- /dev/null
+++ b/Manual-Labeling-Client/stdafx.h
@@ -0,0 +1 @@
+#include