QGIS开发五:VS使用QT插件创建UI界面

news2025/2/27 7:15:54

前面我们说了在创建项目时创建的是一个空项目,即不使用 Qt 提供的综合开发套件 Qt Creator,也不使用 Qt Visual Studio Tools 这类工具。

但是后面发现,如果我想要有更加满意的界面布局,还是要自己写一个UI文件,如果不使用QT插件,在VS中导入自己的UI文件编译起来不是那么容易,因此介绍一下如何使用QT插件来二次开发QGIS。

那么既然使用了Qt VS Tools插件,那么环境配置就要改改了!(不使用QT插件也可以,参见我下一篇博客~)

第一步:安装插件

在安装 Qt Visual Studio Tools,我这里安装的是2.7.2版本,安装低版本记得断网,然后去把自动更新取消勾选。

下载地址 Index of /development_releases/vsaddin/2.7.2

安装完毕记得配置一下QT目录,我这里使用的QT是5.14.2版本。

 第二步:创建Qt Widgets Application

记得勾选XML,因为QgsMapCanvas需要用到QDomNode文件,而QDomNode是一个XML文件,包含在Qt的XML library中。把Debug取消勾选,经测试在Debug环境下运行会报如下错误

 创建的截图如下

然后这里可以选择QMainWindow,当然QWidget也可以

 

 第三步:配置VS2017

和上次这篇文章QGIS二次开发二:不重新编译QGIS进行二次开发_程序员班长的博客-CSDN博客

中配置VS的步骤一致,区别就是把和QT相关的都忽略即可。

VC++目录,包含目录、库目录,配置如下

C/C++,预处理器,配置如下 

_USE_MATH_DEFINES

 

链接器,输入,附加依赖项,配置如下 

qgis_core.lib
qgis_gui.lib

在C/C++,语言,设置C++语言标准 

 在C/C++,所有选项,设置附加选项为/utf-8

设置调试信息,需要注意一下,先输入 

PATH=D:\OSGeo4W\bin;D:\OSGeo4W\apps\qgis-ltr\bin;D:\OSGeo4W\apps\Qt5\bin

 然后记得取消勾选“从父级或项目默认设置继承”

 

 否则会报错

修改main.cpp代码如下,记得修改里面的路径,成功运行代表配置成功!

#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmapcanvas.h>
#include <qgsvectorlayer.h>
 
int main(int argc, char **argv)
{
	// 创建 QgsApplication 实例
	QgsApplication app(argc, argv, true);
	// 设置并检查数据插件目录
	QgsProviderRegistry::instance("D:/OSGeo4W/apps/qgis-ltr/plugins");
 
	// 控制台打印已载入的插件目录
	qDebug() << "QGIS data providers loaded:" << QgsProviderRegistry::instance()->providerList();
 
	// 设置 GDAL 数据目录环境变量
	qputenv("GDAL_DATA", "D:\\OSGeo4W\\apps\\gdal\\share\\gdal");
 
	// 创建 QgsCanvas 画布实例
	QgsMapCanvas c;
 
	// 从磁盘 .shp 文件创建矢量图层
	QgsVectorLayer* pVectorLayer = new QgsVectorLayer(u8"E:\\TestImage\\全国省界\\全国省界.shp", u8"省界");
 
	// 确认图层是否创建成功
	qDebug() << "Is layer valid:" << pVectorLayer->isValid();
 
	// 将图层添加到画布上
	c.setLayers(QList<QgsMapLayer*>() << pVectorLayer);
 
	// 设置画布窗体标题并显示画布
	// 画布本身是 QWidget 的子类,因此可以承担 QWidget 的所有操作
	c.setWindowTitle(u8"QGIS 二次开发:画布");
	c.show();
 
	// 缩放到图层的空间范围
	c.zoomToFullExtent();
 
	// 启动 QgsApplication 实例
	return app.exec();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter设置中文的两种方式,建议使用第二种

方案一 进入jmeter图像化界面&#xff0c;选择Options下的Choose Language&#xff0c;再选择Chinese(Simplified)。这个就是选择语言为简体中文&#xff08;缺陷&#xff1a;这个只是在本次使用时为中文&#xff0c;下次打开默认还是英文的&#xff09; 方案二&#xff08;…

c++11 标准模板(STL)(std::basic_fstream)(四)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_i…

超快软恢复二极管的特点与应用,你必须看的好文章~

什么是超快软恢复二极管&#xff1f; 超快软恢复二极管&#xff08;Ultrafast Soft Recovery Diode&#xff09;是一种特殊的二极管&#xff0c;它具有较快的恢复速度和较低的反向恢复电荷。它通常用于高频开关电路和电源应用中&#xff0c;以提高效率和降低开关损耗。 超快软…

多人协同编辑文档:实现无限制的团队协作!

什么是多人协同编辑文档&#xff1f; 多人协同编辑文档是指两个或以上的用户同时对同一文件进行修改、编辑等操作。 多人协同编辑文档的优点 1、提高办公效率&#xff1a;多人协同编辑文档的出现&#xff0c;避免了传统的文件共享方式中的效率低以及文件版本不一致的问题。 …

Live Market搭建跨境产业数据库,业务触达全球消费者

具有海量数据基础和内容生成需求的跨境电商成为AI应用的核心场景之一&#xff0c;面对这项新兴技术&#xff0c;跨境卖家们积极入局&#xff0c;也随之带动B2B数字外贸持续火热。 AI技术的应用可以帮助它们更好地了解用户和市场需求&#xff0c;提高自身的运营效率和效果&…

了解Web DDoS海啸攻击的4个维度

我们都知道近年来网络攻击的数量和频率急剧上升&#xff0c;针对Web应用程序的DDoS海啸攻击就是其中增长非常迅速的一个种类。过去常见的HTTP/S洪水攻击正在大范围的转变为更难对付的Web DDoS海啸攻击&#xff0c;每个人都应该提前做好被攻击的准备并采取适当的保护措施。 哪些…

【Vue3 博物馆管理系统】定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 [第三章 使用Vue3、Element-plus菜单组件构建轮播图] [第四章 使用Vue3、Element-plus菜单组件构建组图文章] 文章目…

Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

Ubuntu18.04搭配无人机仿真环境 ROS环境配置版本安装 gazebo安装Mavrosa安装PX4源码下载和编译运行仿真地面站安装 ROS环境配置 我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release && echo “deb http://m…

Direct path read LOB

Table full scan &#xff1a; wait event Direct path read because of LOB "Direct path read" Wait Event During LOB Access (Doc ID 2287482.1)​编辑To Bottom In this Document Symptoms Changes Cause Solution References APPLIES TO: Oracle Database …

《赏金猎人》华为对战平台,新手部署指南!

《赏金猎人》是一款休闲联机对战小游戏&#xff0c;目前已免费上架 Cocos Store 资源商城。 本文重点介绍&#xff0c;如何在该游戏中集成华为联机对战能力。 开发环境 Cocos Creator&#xff1a;Cocos Creator 3.7.2Android&#xff1a;Android Studio 3.6.1微信小游戏&#x…

DenseNet网络分析

文章目录 DenseNet结构Dense Layer & Dense BlockDense Layer的宽度Transition Layers 对比实验网络结构训练参数对比结果CIFAR-10&#xff0c;CIFAR-100&#xff0c;SVHN ImageNet数据集 进一步分析 从ResNet开始&#xff0c;有很多研究都是琢磨怎么通过提高深度网络中层与…

【C# 基础精讲】字典(Dictionary)的使用

在C#中&#xff0c;Dictionary<TKey, TValue>是一种非常常用的泛型集合类&#xff0c;用于存储键值对&#xff08;Key-Value Pair&#xff09;的数据结构。Dictionary<TKey, TValue>可以根据键快速查找对应的值&#xff0c;因此在需要快速查找和检索数据的场景下&a…

Lorenz系统最大lyapunov exponent的求解

首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:

【uniapp】使用Vs Code开发uniapp:

文章目录 一、使用命令行创建uniapp项目&#xff1a;二、安装插件与配置&#xff1a;三、编译和运行:四、修改pinia&#xff1a; 一、使用命令行创建uniapp项目&#xff1a; 二、安装插件与配置&#xff1a; 三、编译和运行: 该项目下的dist》dev》mp-weixin文件导入微信开发者…

SLAM框架与相关理论梳理

应该是思维导图的形式使用markmap实现,可以使用md文档在VSCode中添加插件预览,预览图如绑定的那个资源的样式。 效果大概是长这个样子 > 但是CSDN不好用,一堆乱码。这里建议从这个链接中复制下载md文件,使用VSCode的markmap插件查看,或者直接把md的内容复制到markmap网…

Java SPI机制详解-01

1. 概述 SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;是 Java 6 引入了一个内置功能&#xff0c;实现服务提供发现和加载机制&#xff0c;使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 &#xff0c;将装配的控制权移到程序之外&#xff0c;这…

多模态图像融合的相关驱动双分支特征分解

文章目录 CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion摘要本文方法损失函数 实验结果 CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion 摘要 多模态图像融合的目的是使…

GaussDB之SQL Audit,面向应用开发的SQL审核工具

前言 我们先从一个SQL语句说起&#xff08;以某传统单机数据库为例&#xff09;。 也许这就是我们业务代码中潜藏的一个SQL语句&#xff0c;对于一个普通开发者来说&#xff0c;这个语句编写工整&#xff0c;逻辑清晰&#xff0c;没有什么问题&#xff0c;可以直接推到代码仓中…

只需要一个技巧,医疗设备立马大变样!

当谈及医疗领域中的设备运行与维护&#xff0c;蓄电池的监控成为至关重要的一环。医疗设备的顺利运行直接关系到患者的生命安全和医疗工作的有效性。为此&#xff0c;对医疗设备所使用的蓄电池进行实时监控和管理显得尤为关键。 蓄电池监控不仅提高了医疗设备的可靠性&#xff…

7个位运算符(二进制运算)(左移右移运算符的使用)

位运算符运算符运算范例<<左移>>右移>>>无符号右移& 与运算 &#xff08;按位与&#xff09; & | 或运算 &#xff08;按位或&#xff09; ^ 异或运算 &#xff08;按位异或&#xff09; ~ 取反运算 &#xff08;按位取反&…