一、环境搭建
参考大神文章花一下午时间搭建了二次开发环境,现在就环境搭建的过程和中间遇到的问题做个记录
1.1、下载osgeo4w(www.qgis.org/en/site/for…)
我下载的是网络版64位:
1.2.打开安装包,选择高级安装,一直下一步,我的放在了d盘;
1.3.下载仓库选择武大的(gwmodel.whu.edu.cn/mirrors/osg…
1.4.下载的包
Qgis相关的选择:
qt选择
然后等待完成,只要选择了武大的镜像,下载速度还是很快的
1.5、新建一个c++空项目,右键属性配置
包含目录内容:
库目录:
链接器->附加依赖项
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
qgis_core.lib
qgis_gui.lib
qgis_app.lib
调试环境配置:
PATH=D:\OSGeo4W64\bin;D:\OSGeo4W64\apps\qgis-ltr\bin;D:\OSGeo4W64\apps\Qt5\bin
在生成的release目录下,新建qt.conf文件,目的是运行时用到的插件会在这个文件夹下寻找,找不到会报错,里面内容:
[Paths]
Plugins=D://OSGeo4W/apps/Qt5/plugins
二、显示一个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();
}
结果:
三、遇到的问题
搭建环境用了一下午时间,遇到了一些问题,幸亏有qq群的大佬帮忙才能解决,还有一些是自己解决的,特此记录
1.按照大神的教程安装了qgis桌面程序和开发包,在apps->qt5->include下面只有一个文件夹,需要按照我1.4中的步骤安装qt