1.二次开发环境搭建
下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html
点击OSGeo4W Network Installer
点击下载 OSGeo4W Installer
运行程序 osgeo4w-setup.exe,出现以下界面,点击下一页。
选中install from internet,点击下一页。
设置保存的路径,我这里设置E:\OSGeo4W,点击下一页。
这里设置下载存放的路径, 我这里设置E:\Temp,点击下一页。
选择Use System Proxy Settings,进入下一步
添加URL:http://gwmodel.whu.edu.cn/mirrors/osgeo4w
输入qgis-ltr,点击状态变为Install状态,点下一页,然后一直点同意下一页开始下载,如下图所示。
下载完成之后,打开Vs2017开始配置 ,进行配置,以下是demo程序目录,和qgis三方库目录。
在thirdPart路径下创建qgis目录,将E:\OSGeo4W\apps\qgis-ltr-dev目录下的include目录和lib目录拷贝到下面的路径。
2. VS2017开始配置
在工具栏中找到"Qt VS Tools",点击并找到"Options"->"Versions"进行Qt配置,配置文件夹以自己安装位置为准。
附加包含目录
点击"配置属性"->"C/C++"->"常规"-->"附加包含目录"
..\thirdPart\qgis\include
附加库目录
点击"配置属性"->"链接器"->"常规"-->"附加库目录"
..\thirdPart\qgis\lib
附加依赖项
点击"配置属性"->"链接器"->"输入"-->"附加依赖项"
qgis_core.lib
qgis_app.lib
qgis_gui.lib
预处理器定义
点击"配置属性"->“C/C++”->“预处理器”,在预处理器定义中加入"_USE_MATH_DEFINES"
配好以上环境后,基本上编译没有问题了,能够生成可执行程序了。
3.程序运行
拷贝E:\OSGeo4W\apps\qgis-ltr-dev\bin的所有 DLL文件到可执行程序目录下。
拷贝E:\OSGeo4W\apps\gdal-dev\bin的 DLL文件到可执行程序目录下。
拷贝E:\OSGeo4W\apps\proj-dev\bin的 DLL文件到可执行程序目录下。
拷贝E:\OSGeo4W\bin的 DLL文件到可执行程序目录下。
拷贝E:\OSGeo4W\apps\Qt5\bin DLL文件到可执行程序目录下。
拷贝E:\OSGeo4W\apps\Qt5\plugins\platforms目录到可执行程序目录下。
4.源码
以下是运行结果。
static QList<QgsMapLayer *> layers;
static QgsMapCanvas *m_mapCanvas = nullptr;
GisCtrl::GisCtrl(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QString fileName = "F:/GisCtrl/x64/out/map/counties_china.shp";
QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName);
if (!vecLayer->isValid())
{
QMessageBox::critical(this, "error", QString("layer is invalid: \n") + fileName);
return;
}
m_mapCanvas = new QgsMapCanvas();
m_mapCanvas->setExtent(vecLayer->extent());
layers.append(vecLayer);
m_mapCanvas->setLayers(layers);
m_mapCanvas->refresh();
setCentralWidget(m_mapCanvas);
}
int main(int argc, char *argv[])
{
//QString PROJ_LIB_PATH = BussinessLogic::getInstance()->getProjPath();
//qputenv("PROJ_LIB", PROJ_LIB_PATH.toLatin1());//Qt临时环境变量必
QgsApplication app(argc, argv, true);
QgsApplication::initQgis();
GisCtrl w;
w.showMaximized();
return app.exec();
}
5.shp素材文件
https://download.csdn.net/download/wzz953200463/88064897https://download.csdn.net/download/wzz953200463/88064897