64 lines
2.1 KiB
C++
64 lines
2.1 KiB
C++
#include "ManualLabelToolWidget.h"
|
||
#include <qdockwidget.h>
|
||
#include <qgslayertreeview.h>
|
||
#include <qgslayertreemodel.h>
|
||
#include <qgslayertreemapcanvasbridge.h>
|
||
|
||
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)设置为这个停靠窗口的中心部件
|
||
layerTreeDock->setWidget(this->map_layerTreeView);
|
||
|
||
// 3. (可选但推荐)设置停靠窗口允许停靠的区域
|
||
layerTreeDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||
|
||
|
||
|
||
// 5. 将停靠窗口添加到主窗口的左侧区域
|
||
this->addDockWidget(Qt::LeftDockWidgetArea, this->layerTreeDock);
|
||
|
||
|
||
|
||
|
||
}
|
||
|