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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

开发环境的搭建请参考第一篇文章:
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::MainWindow(QWi
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qfl_sdu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值