【QGIS学习】01.QGIS之初体验—环境部署

学习目标

部署一个QGIS二次开发环境
运行一个最简单的示例,了解QGIS二次开发基本框架

参考博文

链接QGIS二次开发环境配置(Visual Studio 2015 + Qt 3.12 + QGIS 3.16)
作者浅眠&
注意:文章最后提到的问题我遇到了,但当时没看到这段内容,从别的地方百度了很久也没解决,最后又回来看了一遍,才发现作者已经给出解决方法了。哭死……

学习过程

环境下载和安装

个人比较喜欢VS,而且又想也可以在Win7上开发,所以用的VS2005版本,但是安装Qt时,自带了Qt Creator,设计界面的时候还是需要的。
在安装VS的时候,还想找64位的版本,后来发现好像只有32位的,而且32位的VS也是可以开发64位程序的,所以……
Qt选择的是3.12,在线下载器下载需要登录,现去Qt官网注册了,结果还是登不上去,不知道什么原因。百度解决方案是,在登录页面断网,然后就可以跳过登录了。(跟Cocos Creator一样,不知道为什么非要登录)
QGIS选择的是3.28版本,下载的时候还是最新的,现在就不是了,更新挺快的。本来还想选3.22,因为怕VS2005不支持,因为所说最新的要C++17支持,但后来用OSGeo4W下载的时候还是选择了28。这一步遇到的困难是官方几个链接都下载不了,最后自己百度了一个国内的镜像,才下载完成的。
在一步步安装完成后,就到了喜闻乐见的“Hello World”阶段。

简单测试实例

为了验证是否安装成功,都得写一个简单的程序测试一下。按照参考博文中的内容,手抄了一遍。
程序主要包括一个main函数和一个对话框界面类QGISTest
QGISTest类继承自QMainWindow,不同于标准Qt编程,没有用QML设计界面,而是用纯代码的方式,添加了一个菜单,用于打开加载文件对话框,加载shp文件,并将主窗口设置为一个QgsMapCanvas实例,就像下面这样

mapCanvas = new QgsMapCanvas();
this->setCentralWidget(mapCanvas);

非常简单。
main函数,则是通过QgsApplication初始化一些参数,然后实例化QGISTest类,并运行。
然后就可以了。
需要注意的是,直接运行程序可能无法运行,会弹出Qt插件未加载的错误。
错误图片

此时找到QGIS安装目录中的D:\Software\OSGeo4W\apps\Qt5\plugins\platforms文件夹(根据自己的安装位置进行修改),将其复制到可执行文件(.exe)同一目录下即可。

学习总结

在使用QGIS二次开发时,最重要的两个类就是界面类程序类
其中界面类继承自QWidget,例子中的QGISTest继承自QMainWindow,而QMainWindow继承自QWidget。主界面设计可以在Qt Desinger中进行,生成C++代码后,然后在VS中编写功能。
程序类继承自QApplication,而QGIS中继承QApplication编写了QgsApplication,这应该作为将来二次开发的程序类基类,主要用于初始化参数。

学习展望

示例中用到了几个常用类,下一步应优先研究学习。

Qt类

QApplication:Qt基础类,采用单例模式,必须在QWidget前实例化,主要了解其生命周期和使用限制。
QWidget:Qt界面类基类,主要了解其主要子类,以及支持的功能。知道哪些可以在Qt Desinger中设计,哪些必须用代码。
QMenu:菜单类,应该不需要太多了解。
QAction:操作类,菜单树的叶节点。需要了解其“信号-槽”机制原理和使用限制。
QList:应该就是个线性表类,暂时不需要太多了解。
QFileDialog:打开文件对话框类,简单了解实例化和限制格式就够了。

QGIS类

QgsApplication:QGIS应用类基类,根据需要对其进行继承。
QgsMapCanvas:QGIS画面类,应该是重点需要学习的类,后续的主要操作都是在画布上进行。
QgsMapLayer:图层类,向画布中添加图层必不可少的类,也是要重点学习,但估计内容不多。
QgsVectorLayer:矢量图层类,目测是QgsMapLayer的子类,需要了解,但内容应该也不多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值