ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QGis二次开发(一)环境搭建

2021-10-19 10:29:58  阅读:903  来源: 互联网

标签:ltr argc QGis 3.16 qgis argv 二次开发 include 搭建


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();

}

我看了很多其他大佬的文章,等一会贴出来,写文章主要是为了自己看,如果有人有问题问我,在评论区提问就可以。

标签:ltr,argc,QGis,3.16,qgis,argv,二次开发,include,搭建
来源: https://blog.csdn.net/zhanghongxia1111/article/details/120831317

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有