QT5.12.6+QGIS3.10二次开发(Qtcreater)(二)图层加载显示

本文档详细介绍了在QT5.12.6和QGIS3.10环境下进行地图应用的二次开发,包括加载SHP文件显示、图层控制器的使用、标签显示以及状态栏坐标显示。通过代码示例,阐述了关键步骤和注意事项,如图层控制器的右键菜单和标签样式将在后续文章中进一步说明。附带完整工程代码下载链接。
摘要由CSDN通过智能技术生成

一、前言

开发环境的搭建请参考第一篇文章:
https://blog.csdn.net/qfl_sdu/article/details/112967169
本例主要实现了以下功能:

  1. 加载shp文件并显示
  2. 显示图层控制器,图层控制器能够控制图层的显示和隐藏
  3. 显示标签(label)
  4. 状态栏显示经纬度坐标
    图层控制器的右键菜单目前还没有做,会在后续的文章中说明。
    标签的显示样式也没有做处理,也会在后续的文章中说明。
    代码中虽然添加了栅格图层的加载,但是没有测试,请谨慎参考。
    废话不多说,先上效果图:
    在这里插入图片描述
    在这里插入图片描述

二、代码

Ui文件中添加action,并绑定槽函数,如下图
在这里插入图片描述

关键部分在代码中都有注释,直接上代码:
.h文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//QGIS include
#include "qgsmapcanvas.h"
#include "qgsmaplayer.h"

//图层控制窗口
#include "qgslayertreeview.h"
#include "qgslayertreemapcanvasbridge.h"


QT_BEGIN_NAMESPACE
namespace Ui {
    class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_actionVectorLayer_triggered();   //添加矢量图层
    void on_actionRasterLayer_triggered();  //添加栅格图层
    void on_actionhaha_triggered();               //设置图层控制窗口的显示/隐藏

    void slot_showPosition(const QgsPointXY& p);//显示鼠标点的坐标

private:
    void InitLayerTreeMapcanvasBridge();  //初始化图层控制窗口与画布间的桥接器



private:
    Ui::MainWindow *ui;

    //图层显示相关
    QgsMapCanvas* m_mapcanvas;                       //图层管理器
    QList<QgsMapLayer *> m_layersList;              //存储加载的图层

    //图层控制窗口相关
    bool m_bShowLayerCtrlWnd;                           //是否显示图层控制窗口
    QgsLayerTreeView* m_layerTreeView;             //图层控制窗口
    QgsLayerTreeMapCanvasBridge* m_bridge;    //图层控制窗口与画布关联桥接器

};
#endif // MAINWINDOW_H

.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QFileDialog>
#include <QMessageBox>
#include <QGridLayout>
//QGIS
#include "qgsvectorlayer.h"
#include "qgsproject.h"
#include "qgsrasterlayer.h"
#include "qgslayertreemodel.h"
#include "qgsmaptoolpan.h"
//QGIS LABEL
#include "qgspallabeling.h"
#include "qgsvectorlayerlabeling.h"

MainWindow
QGIS是一个开源的地理信息系统软件,可以用于地图制作、空间数据分析和地理空间数据可视化等。在进行QGISQt二次开发时,需要进行一些配置和修改。 首先,根据引用\[1\]和引用\[2\]中的代码,可以看到在main.cpp文件中,需要包含"QtWidgetsApplication1.h"和"qgsapplication.h"头文件,并进行一些初始化操作,如设置QGIS的安装路径和初始化QGIS应用。 然后,根据引用\[3\]中的代码,可以看到在修改后的main.cpp文件中,需要包含"mainwindow.h"和"qgsapplication.h"头文件,并进行一些初始化操作,如设置插件路径和初始化QGIS应用。 在进行QGISQt二次开发时,可以根据自己的需求进行相应的修改和扩展,例如创建自定义的窗体、添加功能模块等。可以参考QGIS的官方文档和开发者社区的资源,获取更多关于QGISQt二次开发的信息和示例代码。 总结起来,QGISQt二次开发需要进行一些配置和修改,包括包含相应的头文件、进行初始化操作等。可以根据自己的需求进行相应的修改和扩展。 #### 引用[.reference_title] - *1* *2* [VS2019+QT5.15.2+QGIS二次开发环境搭建(非源码方式)](https://blog.csdn.net/danshiming/article/details/126617074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [QT5.12.6+QGIS3.10二次开发Qtcreater)(一)环境搭建](https://blog.csdn.net/qfl_sdu/article/details/112967169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qfl_sdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值