qgis二次开发
一、下载
qgis
在官网下载的目前稳定版3.16
https://www.qgis.org/en/site/forusers/download.html
osgeo4w 安装
这一步需要更改,其他不需要更改,路径可以改变。
这里选择自己需要的文件进行下载。搜索框中输入
qgis-ltr-devel
qt5-devel
选择相应的库文件;
然后安装独立安装的QGIS3.16,不用做出改变;
将相应的库文件拷贝到独立安装的QGIS3.16/apps下,
vs2017
在官网下载的社区版
vs-qt插件(插件没有用最新版)
我会把安装包都传到资源上,大家自取;或者找我免费私发。
二、基本步骤
接下来就是配置环境,很多文章都写了,我主要记录自己遇到的问题。
1.找不到ui_xxx.h文件,这个问题主要在uic.exe,如果缺少库就把相应的库拷到uic.exe同文件目录下,一般可以解决问题。
2.
这个问题好像其他人没有遇到过。
3.严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “M_PI”: 未声明的标识符 (编译源文件 main.cpp) dierci d:\program files\qgis 3.16.11\apps\qgis-ltr\include\qgsvector.h 175
C/C++ -> 预处理器 ——> _USE_MATH_DEFINES
三、遇到的问题
//#include "dierci.h"
#include <QtWidgets/QApplication>
#include "dierci.h"
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmapcanvas.h>
#include <qgsvectorlayer.h>
#include <qgsproject.h>
int main(int argc, char *argv[])
{
//QApplication a(argc, argv);
QgsApplication a(argc, argv, true);
QgsApplication::setPrefixPath("D:\Program Files\QGIS 3.16.11\apps\qgis-ltr", true);//注意切换你的路径
QgsApplication::initQgis(); //初始化QGIS应用
// 创建 QgsCanvas 画布实例
QgsMapCanvas c;
// 从磁盘 .shp 文件创建矢量图层
QgsVectorLayer* pVectorLayer = new QgsVectorLayer(u8"D:/zhx/qgis_sample_data/shapefiles/airports.shp", u8"市级行政区");
// 确认图层是否创建成功
qDebug() << "Is layer valid:" << pVectorLayer->isValid();
// 将图层添加到画布上
c.setLayers(QList<QgsMapLayer*>() << pVectorLayer);
// 设置画布窗体标题并显示画布
// 画布本身是 QWidget 的子类,因此可以承担 QWidget 的所有操作
c.setWindowTitle(u8"QGIS 二次开发:画布");
c.show();
// 缩放到图层的空间范围
c.zoomToFullExtent();
//dierci w;
//w.show();
return a.exec();
}
我看了很多其他大佬的文章,等一会贴出来,写文章主要是为了自己看,如果有人有问题问我,在评论区提问就可以。