【QGIS学习】03.打开矢量和栅格文件

学习目标

了解QGIS C++加载矢量、栅格文件基本方式,并通过菜单调用这些方法。

参考内容

链接1PyQGIS二次开发教程(一):准备工作
链接2PyQGIS二次开发教程(二):加载影像与矢量
链接3PyQGIS二次开发教程(三):学习制作菜单栏功能
作者yoyi
码云镜像4qgisapp.hqgisapp.cpp
注意:没找到比较系统的C++二次开发内容,参考这个Python版的知乎专栏,写得比较详细清晰,非常有帮助,非常感谢该作者分享,下方中部分图片也直接引用专题中的图片,图片中水印均未删除,如涉及侵权,可联系我删除。
而且Python接口和C++基本一致,可能部分细节存在差异,需要注意。所以在学习的时候结合QGIS官方代码,能更准确一些。官方代码参考的是码云(Gitee),至于为什么不看Github,速度实在太慢了,还经常刷不出来,当然也可以下载下来看。当然有精力的话还是可以把qgisapp完整代码阅读一遍的,可以更详细地了解QGIS功能模块。

主要内容

1.初始UI设计

初始UI设计
使用QtDesigner设计图中界面,具体为

  1. 在MainWindow中间添加frame,并右击窗口将布局调整为垂直布局;
  2. 添加Dock Widget,吸附到窗口左侧。
  3. 然后添加一些初始化代码,具体参考链接1

当然与Python不一样,需要为窗口类(App类)创建h文件和cpp文件,按照官方代码,该类直接继承自QMainWindow和对应的Ui类,(Qt默认创建的是将Ui类作为窗口类的一个成员变量的,我猜继承的好处是可以直接访问Ui的成员变量)

class QtGis : public QMainWindow, private Ui::QtGisClass
QtGis::QtGis(QWidget *parent) : QMainWindow(parent)
{
   
    setupUi(this);
	// 1. set title
	setWindowTitle("QGIS Interface");
	// 2. initial layer tree
	QVBoxLayout* vl = new QVBoxLayout(dockWidgetContents);
	mLayerTreeView = new QgsLayerTreeView(this);
	vl->addWidget(mLayerTreeView);
	// 3. initial map canvas
	mMapCanvas = new QgsMapCanvas(this);
	QHBoxLayout* hl = new QHBoxLayout(frame);
	hl->setContentsMargins(0, 0, 0, 0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值