一、环境搭建
参考大神文章(http://caiyi.tech/)花一下午时间搭建了二次开发环境,现在就环境搭建的过程和中间遇到的问题做个记录
1.1、下载osgeo4w(https://www.qgis.org/en/site/forusers/download.html)
我下载的是网络版64位:
![](https://img.haomeiwen.com/i18146356/33282b93a8078a5f.png)
1.2.打开安装包,选择高级安装,一直下一步,我的放在了d盘;
![](https://img.haomeiwen.com/i18146356/460aba1b875af051.png)
1.3.下载仓库选择武大的(http://gwmodel.whu.edu.cn/mirrors/osgeo4w)
![](https://img.haomeiwen.com/i18146356/fec2358d0944f7d1.png)
1.4.下载的包
Qgis相关的选择:
![](https://img.haomeiwen.com/i18146356/3886c457fe2f5ba5.png)
qt选择
![](https://img.haomeiwen.com/i18146356/ea9cdbea9e6278bc.png)
然后等待完成,只要选择了武大的镜像,下载速度还是很快的
1.5、新建一个c++空项目,右键属性配置
![](https://img.haomeiwen.com/i18146356/f0ef89396fa2b6c6.png)
包含目录内容:
![](https://img.haomeiwen.com/i18146356/bcdf85187193c9d9.png)
库目录:
![](https://img.haomeiwen.com/i18146356/9a8df5fae935bcfd.png)
链接器->附加依赖项
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
qgis_core.lib
qgis_gui.lib
qgis_app.lib
![](https://img.haomeiwen.com/i18146356/0f68f758c62133a9.png)
![](https://img.haomeiwen.com/i18146356/ee7c6b32e9cff122.png)
调试环境配置:
PATH=D:\OSGeo4W64\bin;D:\OSGeo4W64\apps\qgis-ltr\bin;D:\OSGeo4W64\apps\Qt5\bin
![](https://img.haomeiwen.com/i18146356/388718a1b2681e82.png)
在生成的release目录下,新建qt.conf文件,目的是运行时用到的插件会在这个文件夹下寻找,找不到会报错,里面内容:
[Paths]
Plugins=D://OSGeo4W/apps/Qt5/plugins
![](https://img.haomeiwen.com/i18146356/e0397b9c3caa94b4.png)
二、显示一个shp
2.1、新建main.cpp,内容如下
#define _USE_MATH_DEFINES
#include <cmath>
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmapcanvas.h>
#include <qgsvectorlayer.h>
#include <qgsproject.h>
int main(int argc, char *argv[]) {
// 创建 QgsApplication 实例
QgsApplication app(argc, argv, true);
// 设置并检查数据插件目录
QgsProviderRegistry::instance("D:/OSGeo4W64/apps/qgis-ltr/plugins");
// 控制台打印已载入的插件目录
qDebug() << "QGIS data providers loaded:" << QgsProviderRegistry::instance()->providerList() << endl;
// 设置 GDAL 数据目录环境变量
qputenv("GDAL_DATA", "D:/OSGeo4W64/share/gdal");
// 创建 QgsCanvas 画布实例
QgsMapCanvas c;
// 从磁盘 .shp 文件创建矢量图层
QgsVectorLayer* pVectorLayer = new QgsVectorLayer(u8"F:/草原类型图/青海省草原类型图_xa80.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();
}
结果:
![](https://img.haomeiwen.com/i18146356/c20009919b828cc2.png)
三、遇到的问题
搭建环境用了一下午时间,遇到了一些问题,幸亏有qq群的大佬帮忙才能解决,还有一些是自己解决的,特此记录
1.按照大神的教程安装了qgis桌面程序和开发包,在apps->qt5->include下面只有一个文件夹,需要按照我1.4中的步骤安装qt
![](https://img.haomeiwen.com/i18146356/9e19ae965eef93d9.png)
网友评论