文章目录

  • 前言
  • 一、创建项目
  • 二、代码编写
    • 1.引入库
    • 2.绘制界面
    • 3.编写代码
      • 1.初始化画布
      • 2.打开栅格数据
      • 2.打开矢量数据
  • 总结

前言

本文意在整理学习资料,以备不时之需。如有谬误,欢迎指正。
安装环境:Windows10+VS2022+QT5.14.2
VS敲代码及环境配置还是有一定优势的,其环境配置更直接更简单。
本次采用VS2022进行编写(已安装QT插件)安装VS+qt环境
参考文章:http://t.csdn.cn/04U0g


一、创建项目

创建一个SampleLabelTool 的项目
release 的版本就好,有些debug后会出错。
编译器版本 5.14.2_msvc2017_64

  • 包含目录
D:\QT\OSGeo4W\include
D:\QT\OSGeo4W\apps\qgis-ltr\include
D:\QT\OSGeo4W\apps\Qt5\include
D:\QT\OSGeo4W\apps\Qt5\include\QtGui
D:\QT\OSGeo4W\apps\Qt5\include\QtXml
D:\QT\OSGeo4W\apps\Qt5\include\QtWidgets
D:\QT\OSGeo4W\apps\Qt5\include\QtCore
  • 库目录
D:\QT\OSGeo4W\apps\qgis-ltr\lib
D:\QT\OSGeo4W\apps\Qt5\lib
  • 附加依赖项
qgis_core.lib
qgis_app.lib
qgis_gui.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib

当后期需要添加一些模块的时候,记得添加相应的文件路径(包含目录、附加依赖项)!!!

  • 预处理器
_USE_MATH_DEFINES
  • C++语言标准
ISO C++ 17标准

复制以下路径下的dll到项目目录

D:\QT\OSGeo4W\bin
D:\QT\OSGeo4W\apps\Qt5\bin
D:\QT\OSGeo4W\apps\qgis-ltr\bin

复制D:\QT\OSGeo4W\apps\Qt5\plugins下面的platforms文件夹到文件生成的exe目录下(如:D:\VisualStudio\projects\SampleLabelTool2\x64\Release

二、代码编写

1.引入库

代码如下(示例):

#include "SampleLabelTool.h"
#include <QtWidgets/QApplication>
#include<QgsApplication.h>int main(int argc, char *argv[])
{//初始化QGisQgsApplication a(argc, argv, true);QgsApplication::setPrefixPath("D:/QT/OSGeo4W/apps/qgis-ltr", true);QgsApplication::initQgis();SampleLabelTool w;w.show();return a.exec();
}

注:到此处可以尝试运行监测环境配置

2.绘制界面

在VS中直接用Qt Designer打开ui。
若打开会闪退,文件打开不稳定。
扩展-》Qt VS Tools->create pro
创建pro文件结束后,可以在文件夹直接以QT编译器打开

如上图所示,拖一个widget到窗体中,并使窗口右键布局设置为栅格布局gridLayout(撑满窗体)
然后将widget更名为widget_mapCanvas

3.编写代码

1.初始化画布

在SampleLabelTool.h中添加#include <QgsMapCanvas.h>

void SampleLabelTool::initMapCanvas(QWidget* parent)
{mapCanvas = new QgsMapCanvas(parent);//创建画布QGridLayout* pLayout = new QGridLayout(parent);//设置画布窗口为栅格布局pLayout->addWidget(mapCanvas, 0, 0, 1, 1);//添加画布到栅格布局中pLayout->setMargin(0);//设置栅格布局的空隙为0QgsEditorWidgetRegistry a;a.initEditors(mapCanvas);//注册画布
}

2.打开栅格数据

void SampleLabelTool::addRaster(QString rasterPath, QString basename)
{qDebug() << "rasterPath :" << rasterPath;qDebug() << "basename :" << basename;QgsRasterLayer* rasterLayer = new QgsRasterLayer(rasterPath, basename, "gdal");qDebug() << "isValid :" << rasterLayer->isValid();if (!rasterLayer->isValid()) {QMessageBox::critical(this, "error", "open raster file error");return;}QgsProject::instance()->addMapLayer(rasterLayer);mapCanvasLayerSet->append(rasterLayer);mapCanvas->setExtent(rasterLayer->extent());mapCanvas->setLayers(*mapCanvasLayerSet);mapCanvas->setVisible(true);mapCanvas->freeze(false);mapCanvas->refresh();
}

2.打开矢量数据

void SampleLabelTool::addVector(QString vectorPath, QString basename)
{qDebug() << "vectorPath :" << vectorPath;qDebug() << "basename :" << basename;QgsVectorLayer* vecLayer = new QgsVectorLayer(vectorPath, basename, "ogr");if (!vecLayer->isValid()) {QMessageBox::critical(this, "error", "open shape file error");return;}QgsProject::instance()->addMapLayer(vecLayer);mapCanvasLayerSet->append(vecLayer);mapCanvas->setExtent(vecLayer->extent());mapCanvas->setLayers(*mapCanvasLayerSet);mapCanvas->setVisible(true);mapCanvas->freeze(false);mapCanvas->refresh();
}

全部代码


总结

实现QGIS二次开发的环境配置,以及简单的代码编写

QGIS-创建QGIS项目相关推荐

  1. Linux qgis 编译,QGIS简介与源代码编译

    QGIS(http://qgis.org)是一个集成了很多个开源的空间数据处理库的桌面GIS软件,支持Python脚本.QGIS基于QT和SIP进行开发,支持Windows\Linux\MacOS等操 ...

  2. Eclipse+Maven创建web项目

    有时候我们想用eclipse+maven创建web项目,怎么操作呢,下面我来给大家来分享一下方法 所需工具 已经安装了maven插件的elipse 步骤 1.打开eclipse,右键new--othe ...

  3. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...

  4. 使用SVN+Axure RP 8.0创建团队项目

    一.使用到的工具: VisualSVN Server --SVN服务器:https://www.visualsvn.com/server/ Axure RP 8.0  :http://www.down ...

  5. 使用idea创建springboot项目并打成war包发布到weblogic上...

    部署tomcat也是类似的,但是需要注意项目配置的路径,或者直接将项目放到webapp的ROOT目录下. 使用工具:intelliJ IDEA2016.3, jdk1.8 ,weblogic12 一 ...

  6. 介绍一个懒人创建springmvc项目的方法(二)

    PS: 我是一个懒人,我懒得搭建项目连pom都不想去找,连web.xml都不想配置.所以就会想着找一些简便的办法,来适应我这种懒人. ---------------------------- 本人介绍 ...

  7. 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)

    1.创建Django项目 文档:Writing your first Django app, part 1 | Django documentation | Django 步骤 创建Django项目 ...

  8. Eclipse 创建 Java 项目概述

    Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成开发环境,如C,C++, ...

  9. 创建maven项目但是总是报错

    在创建maven项目的时候总是报错,也不知道为什么,是不是我本地的maven版本是太低了,还是其他的什么原因,那么我还是重新下载一个maven吧,怎么下载: 我们可以从这个地址去下载: http:// ...

  10. IDEA创建maven项目报错解决:Failed to create a Maven project: 'C:/Users/../IdeaProjects/../pom.xml' already e

    此文首发于我的个人博客:IDEA创建maven项目报错解决 Failed to create a Maven project 'C:/Users/-/IdeaProjects/-/pom.xml' a ...

最新文章

  1. 京东JIMI用户未来意图预测技术揭秘
  2. 论优秀的码农,学会这5点!
  3. SQL Server Integration Services(SSIS)中的脚本任务调试
  4. 【超简单已实现】CSDN实现点击跳转到指定段落
  5. 中国开启开源新纪元!
  6. Github 再现失误:部分用户密码明文暴漏
  7. python提取字符串中单词_从字符串中提取单词,删除标点符号并在Python中返回带有分隔单词的列表...
  8. 点击场景中的物件无法定位到Hierarchy
  9. Python爬取安居客租房数据,设置排除自己条件以外的数据
  10. 高效制作期刊论文三线表格教程
  11. css在线代码生成工具汇总
  12. PS人像修图,通道磨皮、高低频磨皮、滤镜磨皮、人像精修
  13. Mono.Cecil简介与示例
  14. 李雅普诺夫理论基础(1)
  15. 娱乐小游戏助力神器威信小程序源码下载多种游戏选择玩法多种
  16. python可以剪辑视频吗_你知道吗?Python也可以剪辑视频!
  17. 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
  18. 为你精选 · 地产行业数字化转型攻略
  19. 2048游戏代码java总结_软件工程——Java版2048游戏学习报告
  20. 【渝粤题库】广东开放大学 建筑测量 形成性考核

热门文章

  1. adams打不开提示msc license_Adams打开出现错误提示:
  2. CRNN-基于序列的(端到端)图像文本识别
  3. Ofiice 2016 Excel 表中某一列按照另一列的数值进行排序
  4. S.H.E单飞不解散 Hebe率先开跑筹备个人专辑
  5. c语言人民币小写转换成大写,C语言实现人民币小写转大写
  6. Excel2010分成两个或者多个独立窗口
  7. 计算机汉字编码不能使用内码,汉字编码及区位码查询算法
  8. Notebook交互式完成目标检测任务
  9. 网站变灰,首页变灰怎么实现?
  10. 牧师与魔鬼——动作分离版