QGIS二次开发六:VS不借助QT插件创建UI界面

这篇具有很好参考价值的文章主要介绍了QGIS二次开发六:VS不借助QT插件创建UI界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇博客我们说了在VS中如何使用QT插件来创建UI界面,但是我们二次开发QGIS的第一篇博客就说了,最好使用OSGeo4W中自动下载的QT进行QGIS二次开发,这样兼容性是最好的,那么该如何在VS中不使用外部安装的QT以及QT的VS插件情况下进行UI界面的创建和使用呢?

如果你仔细看完了我前面的博客,那么配置起来也很简单~

一、创建空项目

配置过程和下面这篇博客一样,可以使用这篇博客创建的模板来创建项目。QGIS二次开发二:不重新编译QGIS进行二次开发_程序员班长的博客-CSDN博客由于重新编译QGIS对于初学者来说还是有一定难度,因此这里介绍另外一种不编译QGIS也能够二次开发的方法,不需要下载QGIS的整套源码。https://kantlee.blog.csdn.net/article/details/132161333 QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 创建完成后配置调试一下环境和QT插件目录。

二、设置环境变量

由于我们根据QT的UI文件要生成对应的头文件,就需要使用QT自带的uic命令,该命令存在于OSGeo4W安装目录下的\apps\Qt5\bin文件夹下,同时,这个命令执行需要依赖一个动态链接库icuuc67.dll,这个文件存放在OSGeo4W安装目录下的\bin文件夹内。因此,要想使用此命令,我们需要将这两个目录添加到环境变量中。在Path变量中添加这两个路径即可。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 三、添加UI文件

在使用OSGeo4W安装QGIS的时候,会一起安装一个配套的Qt Designer,开始菜单中可以找到。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

我们打开Qt Designer,创建一个界面

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 然后保存到我们的项目路径下

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 然后在这个目录执行cmd,输入uic ui文件名 -o 自定义头文件名

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

可以看到在项目路径下生成了一个UI文件的头文件

 QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 然后我们在VS中添加现有项,将这两个文件添加进来。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

四、绑定UI文件

右键点击项目,添加一个类,这个类就是我们的主窗口,基类选择我们创建UI文件时选择的类,我选择的是QWidget,注意名字不要和UI的头文件重名,类名首字母大写。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 首先,在我们新创建的类的头文件中引入UI界面的头文件

#include "qgisTestUI.h"

 然后添加构造函数,实例化一个ui对象,QgisUITest.h的内容如下

#pragma once
#include <qwidget.h>
#include "qgisTestUI.h"

class QgisUITest :	public QWidget
{

public:
	QgisUITest(QWidget * parent = 0);

private:
	Ui::qgisTestUI ui;
};

 然后编辑main.cpp

首先导入我们的主窗口头文件

#include "QgisUITest.h"

 然后实例化一个主窗口并进行展示

#include <qgsapplication.h>
#include "QgisUITest.h"
#include <qgsproviderregistry.h>

int main(int argc, char **argv)
{
	// 创建 QgsApplication 实例
	QgsApplication app(argc, argv, true);
	// 添加插件目录
	QgsProviderRegistry::instance("D:/OSGeo4W/apps/qgis-ltr/plugins");
	// 配置GDAL环境变量
	qputenv("GDAL_DATA", "D:\\OSGeo4W\\apps\\gdal\\share\\gdal");
	// 实例化创建一个窗口
	QgisUITest q;
	// 展示窗口
	q.show();
	app.exec();
}

然后编辑我们的新创建的类的cpp文件,在这里定义我们的构造函数

QgisUITest::QgisUITest(QWidget * parent)
{
}

设置ui界面

ui.setupUi(this);

最后,设置一个信号和槽,当我点击界面的QPushButton按钮时,QLabel显示“界面创建成功”

QgisUITest.cpp完整代码如下

#include "QgisUITest.h"

QgisUITest::QgisUITest(QWidget * parent)
{
	ui.setupUi(this);
	connect(ui.pushButton, &QPushButton::clicked, [=]() {
		ui.label->setText("成功创建界面!");
	});
}

五、运行结果

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

可以看到,我们的文字并没有完整显示出来,修改一下ui界面即可。 

 六、更改UI界面

右键我们的ui文件,选择打开方式,然后添加一个新的,程序和参数参见QGIS自带的Qt Designer的属性页,目标的第一个值为程序,第二个值为参数。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 填入即可,友好名称自己决定,然后点击确定,并设为默认值。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 这时我们双击ui文件,就会在QGIS自带的Qt Designer中打开我们的界面。

重新设计后,再次执行uic命令,头文件会自动更改。

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis

 再次运行我们的项目,可以看到界面被我们更改成功!

QGIS二次开发六:VS不借助QT插件创建UI界面,QGIS,qt,ui,开发语言,qgis文章来源地址https://www.toymoban.com/news/detail-641997.html

到了这里,关于QGIS二次开发六:VS不借助QT插件创建UI界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12.qgis二次开发qt中实现图层树右键图层更改图层颜色,以及图层标注。

    qgis图层树右键图层更改图层颜色,以及图层标注。 新建一个类mygistreeviewmenu用于管理图层树,新建一个窗体类symbolstyle用于选择颜色。新建一个窗体类labelcontrol用于设置标注。 构造函数中添加 添加一个窗体类labelcontrol用于显示标签。

    2024年02月05日
    浏览(48)
  • VS + QT 封装带UI界面的DLL

    一、创建编译DLL的项目 1.新建Qt Class Liabrary 2.新建项目,选择Qt Widgets Class 3.新建C++类,可以在此类里面写算法函数用于调用。 4.下面是添加完Qt窗体类和C++类之后的项目截图 5.修改头文件并编译 将uidemo_global.h中的ifdef内容复制到dialog.h上: 6.修改dialog.h,在class后Dialog前加入:

    2024年02月10日
    浏览(82)
  • QT笔记——vs + qt 创建一个带界面的 dll 和 调用带界面的dll

    用VS + qt 生成dll 和 调用生成的dll 环境: vs 2019 + qt 5.12 创建dll 上一次我们是直接使用的qt 为我们提供方便的类库创建 ,这次呢 我们自己写类库 第一步:创建一个QT应用程序 第二步,修改程序为 生成dll 并且 我修改了生成的所在路径 添加QT的模块 ,自己用了什么,就添加什

    2024年02月03日
    浏览(42)
  • VS打开Qt的ui界面后闪退(ui无法打开文件)的解决办法

    VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法 问题: 近两天在vs中直接点解ui界面,自动调用Qt Designer打开界面几秒后Designer界面闪退,回到vs界面,并有“——.ui无法打开文件”的错误提示。 这个问题应该是Windows或Qt哪些东西更新造成的,用Qt的几个同学都有反

    2024年02月11日
    浏览(70)
  • CloudCompare二次开发之如何设计界面ui与功能实现?

      CloudCompare源代码编译成功后,即可进行二次开发,可以通过修改源码实现二次开发,二次开发基础功能见(CloudCompare如何进行二次开发?),若想要实现更多自定义功能,可以自定义界面ui,并操作CloudCompare程序处理数据。本文讲解界面ui设计,修改相应的文件,使Cloud

    2023年04月20日
    浏览(41)
  • UG\NX二次开发 改变Block UI界面的尺寸

     1.设置“Dialog-DialogSizing”为Allow Resize;  2.添加滚动窗口控件,设置Width、Height的值,例如宽度500、高度5,可改变UI界面大小   3.在滚动窗口控件节点下添加其他的UI块。例如,添加 树控件。

    2024年02月13日
    浏览(43)
  • C# SolidWorks 二次开发 -从零开始创建一个插件(2)

    上一篇我详细讲解了如何创建一个插件,但是无界面无按钮,这种插件适合配合事件偷偷的在后台做点什么事情。今天这篇讲一下如何增加一些按钮到工具栏、菜单上去。 先告诉大家这个东西注册表在哪,因为solidworks在这方面做的不太好,插件你改个名字,就有多个工具栏

    2024年02月15日
    浏览(60)
  • Qgis二次开发-QgsMapTool地图交互工具详解

    1.简介 QgsMapTool地图工具是用于操作地图画布的用户交互式工具。例如,地图平移和缩放功能被实现为地图工具。 QgsMapTool是抽象基类,以下是类的继承关系: QgsMapToolEdit:用于编辑矢量几何图形的映射工具的基类  QgsMapToolEmitPoint:一个地图工具,当单击地图时,它只是发出一

    2024年02月16日
    浏览(53)
  • QGIS二次开发四:实现图层列表

    在实际开发中我们通常会遇到同时显示多个图层,并且还要实时显示和隐藏各图层的需求,如同 ArcGIS 的图层列表那样,界面左侧显示图层列表,列出当前已加载的所有图层,同时每个图层前面有复选框可以控制图层的显示/隐藏;界面右侧为画布,按图层列表的适当顺序显示

    2024年02月13日
    浏览(35)
  • Ubuntu 22.04 配置 QGIS二次开发环境

    源码地址: https://github.com/qgis/QGIS/releases QGIS 官方指导文档地址: https://github.com/qgis/QGIS/blob/release-3_26/INSTALL.md(此处为3.26的指导文档,可以自行修改查看) sudo apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex flip gdal-bin git graphviz grass-dev libexiv2-dev l

    2024年02月16日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包