Qt下开发基于QGIS的应用程序

news2024/11/15 23:39:03

Qt下开发基于QGIS的应用程序

    • 目的
    • 版本说明
    • 1、Qt的安装
    • 2、MSVC套件与Windows 10 SDK的下载
    • 3、QGIS开发有关的库文件下载
    • 4、环境搭建
    • 5、QGIS开发环境搭建
    • 6、展示网页地图

目的

由于有在背景地图上进行动态轨迹(曲线)显示的需要,故采用Qt+QGIS的方案!

版本说明

Qt5.12.12,VS2015编译器,QGIS3.10.1。
在配置之前,电脑是新装机的系统,没有任何相关软件版本。

1、Qt的安装

在Qt官网(https://download.qt.io/)或国内镜像网站(https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt)或网络搜索下载Qt5.12.12安装包。

下载完成进入安装,如下图,首先需要进行账号的注册。
Qt安装
全部next后到Select Components,具体按照下面两张图进行组件选择:
组件选择
组件选择2
之后全部按next,直到等待安装完成。

2、MSVC套件与Windows 10 SDK的下载

Visual Studio Installer可以提供这两个东西的下载。百度官网就能下载Visual Studio Installer
具体的安装选择只需要下图所示的3个勾,其余的都可以取消。
安装MSVC套件

3、QGIS开发有关的库文件下载

在 官网下载OSGeo4W network installer。
在这里插入图片描述
下载后运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里选择Direct Connection
在这里插入图片描述
这里选择download.osgeo.org
在这里插入图片描述
搜素栏输入qgis
在这里插入图片描述
点击Libs后的小圈,变成Install
在这里插入图片描述
一直点击下一步,就可以开始下载了
在这里插入图片描述
但是下载速度一般是比较慢的。所以还是推荐直接下载其他人下载好的压缩包。

下载解压后的文件组成如下图:
在这里插入图片描述

4、环境搭建

运行Qt Creator
在这里插入图片描述
新建工程后,双击Qt Widgets Application
在这里插入图片描述
在这里插入图片描述
一直下一步,直到Kit Selection,可以只选择MSVC2015

在这里插入图片描述
完成后如下图
在这里插入图片描述
左下角选择Release,编译运行,成功显示空白窗口
在这里插入图片描述
工程文件夹里出现build-test_1-Desktop_Qt_5_12_12_MSVC2015_64bit-Release文件夹。
到此为止,已经可以成功在Qt中使用MSVC编译器

这个过程中,有可能无法运行rc.exe的编译错误,把C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x64文件夹下的rc.exe、rcdll.dll文件拷贝到C:\Qt\Qt5.12.12\5.12.12\msvc2015_64\bin下即可。

下面进行Qgis开发环境搭建。

5、QGIS开发环境搭建

打开OSGeo4W64文件夹
在这里插入图片描述
拷贝OSGeo4W64\apps\Qt5\bin目录下全部dll到exe目录(在工程文件的release文件夹下)下。
在这里插入图片描述
拷贝OSGeo4W64\apps\Qt5\plugins 目录下的platforms目录到exe目录下plugins目录(自己新建)里。
在这里插入图片描述
拷贝OSGeo4W64\apps\qgis-ltr\bin 目录下全部文件考到exe目录下。
拷贝OSGeo4W64\bin 目录下全部dll文件和gdalplugins目录考到exe目录下。
把OSGeo4W64\apps\qgis-ltr\plugins目录下全部文件考到exe同级plugins目录下。
拷贝OSGeo4W64\share 中gdal目录到exe同级的share目录下(自己新建)。
在exe目录下新建一个qt.conf文件,填写如下内容,用txt写完之后换个拓展名就可。
在这里插入图片描述
在这里插入图片描述
到此为止,文件移动完毕.
下面打开工程,修改pro文件
在这里插入图片描述
其中有关文件夹位置根据自己下载的情况进行修改
修改main函数
在这里插入图片描述
刚开始修改会显示找不到qgsapplication.h文件,那是因为还没有编译pro文件,直接编译运行就可以了。

修改mainwindow.h文件
在这里插入图片描述
修改mainwindow.cpp文件
在这里插入图片描述
编译运行,显示绿幕,Qgis开发环境已成功搭建。
在这里插入图片描述

6、展示网页地图

双击mainwindow.ui,进行ui设计
在这里插入图片描述
右键画布,点击添加工具栏
点击画布左下角新建动作,设定对象名称为actshowmap
在这里插入图片描述
点击OK,发现Action Editor框内多出一栏动作,将其拖拽至上方工具栏处,发现下面使用那里已经打勾,说明动作已成功导入工具栏。

新建动作“退出”,重复上面操作
在这里插入图片描述
点击下方signals and slots editor,点击绿色加号,如下图选择栏目
在这里插入图片描述
编译运行,成功展示出工具栏,点击退出也可实现退出,说明成功实现工具栏动作。

下面进行展示地图的代码实现。
在mainwindow.h文件中,定义函数addLayers(),定义图层集mapLayerSet,添加头文件,如下图
在这里插入图片描述在mainwindow.cpp文件中写addLayer(),这里添加的是栅格图层,如下图
在这里插入图片描述
图层url选择的是
http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x=105&y=48&z=7
添加头文件:

#include <qgsrasterlayer.h>
#include <QMessageBox>
#include <qgsproject.h>

如果之前环境搭建好了,这里应该是不会显示找不到文件的

最后添加显示地图按键的connect,如图:
在这里插入图片描述
编译运行,发现点击展示地图按钮没有反应,在下方应用程序输出栏可以看见原因是
Cannot find proj.db
使用everthing搜素文件proj.db和proj.lib,在exe目录新建文件夹proj,将这两个文件复制进去
在这里插入图片描述
在main函数中添加路径,如图
在这里插入图片描述
再次编译运行,按键功能正常,成功显示地图
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CVS,SVN,Git,Mercurial 代码管理工具

现代软件开发过程中要实现高效的团队协作&#xff0c;需要使用代码分支管理工具实现代码的共享、追溯、回滚及维护等功能。目前流行的代码管理工具&#xff0c;包括 CVS&#xff0c;SVN&#xff0c;Git&#xff0c;Mercurial 等 CVS 和 SVN 是集中管理&#xff0c;Git 具有非常…

Docker 容器化学习

文章目录 前言Docker架构 1、 docker安装2、启动docker服务3、设置docker随机器一起启动4、docker体验5、docker常规命令5.1、容器操作docker [run|start|stop|restart|kill|rm|pause|unpause]docker [ps|inspect|exec|logs|export|import] 5.2、镜像操作docker images|rmi|tag…

AOF日志:宕机了,Redis如何避免数据丢失

当服务器宕机后&#xff0c;数据全部丢失&#xff1a;我们很容易想到的一个解决方案是从后端数据库恢复这些数据&#xff0c;但这种方式存在两个问题&#xff1a;一是&#xff0c;需要频繁访问数据库&#xff0c;会给数据库带来巨大的压力&#xff1b;二是&#xff0c;这些数据…

整数规划——第三章 全单模矩阵

整数规划——第三章 全单模矩阵 若线性规划问题的约束矩阵为全单模矩阵&#xff0c;则该问题可行域的顶点都是整数点&#xff0c;从而线性规划与整数规划的最优解相同。 3.1 全单模性与最优性 考虑线性整数规划问题&#xff1a; (IP) min ⁡ c T x , s . t . A x ≤ b , x …

19、springboot引用配置属性或引用生成文件的属性或引用随机值

引用配置属性或引用生成文件的属性或引用随机值 ★ 使用占位符引用其他配置属性&#xff1a; 配置文件中可用${}占位符引用已有的属性&#xff0c;被引用的属性可以是&#xff1a; - 已定义的属性。 - 来自其他配置源&#xff08;比如命令行的选项参数、环境变量、系统属性等…

JGJ79-2012建筑地基处理技术规范

为了在地基处理的设计和施工中贯执行国家的技术经济政策&#xff0c;做到安全适用、技术先进、经济合理、确保质量、保护环境&#xff0c;制定本规范。 本规范适用于建筑工程地基处理的设计、施工和质量检验。 地基处理除应满足工程设计要求外&#xff0c;尚应做到因地制宜就…

【数模】奇异值分解SVD和图形处理

介绍奇异值分解在图形压缩中的运用&#xff0c;并将简单介绍下Matlab对于图形和视频的处理 一、奇异值分解介绍 1.1 基本概念 奇异值分解(Singular Value Decomposition&#xff0c;以下简称SVD)是线性代数中一种重要的矩阵分解&#xff1a; U和V都是正交矩阵∑是奇异值矩阵&…

操作系统_内存管理

这里写目录标题 虚拟内存是什么为什么要有虚拟内存虚拟内存的实现方式1.分页查找过程页表的底层实现 2.分段段表的底层实现 3.段页式 分段和分页有什么区别什么是交换空间物理地址、逻辑地址、有效地址、线性地址、虚拟地址页面替换算法什么是缓冲区溢出 有什么危害malloc 是如…

Arthas协助MQ消费性能优化

背景 项目中使用AWS的SQS消息队列进行异步处理&#xff0c;QA通过压测发现单机TPS在23左右&#xff0c;目标性能在500TPS&#xff0c;所以需要对消费逻辑进行优化&#xff0c;提升消费速度。 目标 消费TPS从23提升到500 优化流程 优化的思路是先分析定位性能瓶颈&#xff…

如何加载模型YOLOv8 ONNXRuntime

YOLOv8 是 YOLO(You Only Look Once)目标检测系统的最新版本(v8)。YOLO 是一种实时、一次性目标检测系统,旨在在网络的单次前向传递中执行目标检测,使其快速高效。YOLOv8是之前YOLO模型的改进版本,具有更高的精度和更快的推理速度。 ONNX(开放神经网络交换)是一种表示…

算法练习--leetcode 数组

文章目录 爬楼梯问题裴波那契数列两数之和 [数组]合并两个有序数组移动零找到所有数组中消失的数字三数之和 爬楼梯问题 输入n阶楼梯&#xff0c;每次爬1或者2个台阶&#xff0c;有多少种方法可以爬到楼顶&#xff1f; 示例1&#xff1a;输入2&#xff0c; 输出2 一次爬2阶&a…

正点原子HAL库入门1~GPIO

探索者F407ZGT6(V3) 理论基础 IO端口基本结构 F4/F7/H7系列的IO端口 F1在输出模式&#xff0c;禁止使用内部上下拉 F4/F7/H7在输出模式&#xff0c;可以使用内部上下拉不同系列IO翻转速度不同 F1系列的IO端口 施密特触发器&#xff1a;将非标准方波&#xff0c;整形为方波 当…

WebRTC 之音视频同步

在网络视频会议中&#xff0c; 我们常会遇到音视频不同步的问题&#xff0c; 我们有一个专有名词 lip-sync 唇同步来描述这类问题&#xff0c;当我们看到人的嘴唇动作与听到的声音对不上的时候&#xff0c;不同步的问题就出现了 而在线会议中&#xff0c; 听见清晰的声音是优先…

pygame贪吃蛇游戏

pygame贪吃蛇游戏 贪吃蛇游戏通过enter键启动&#xff0c;贪吃蛇通过WSAD进行上下左右移动&#xff0c;每次在游戏区域中随机生成一个食物&#xff0c;每次吃完食物后&#xff0c;蛇变长并且获得积分&#xff1b;按空格键暂停。 贪吃蛇 import random, sys, time, pygame from …

SQL 表别名 和 列别名

列表名 列表名之后 order by 可以用别名 也可以用原名&#xff0c; where 中不能用别名的 SQL语句执行顺序&#xff1a; from–>where–>group by -->having — >select --> order 第一步&#xff1a;from语句&#xff0c;选择要操作的表。 第二步&#xff1…

SolidWorks 3D Interconnect介绍

目前市面上有的三维设计软件有很多&#xff0c;如UG、Pro/E、CATIA等&#xff0c;而且每个三维设计软件都会生成自己文件格式。由于产品设计的原因&#xff0c;我们避免不了的会需要去使用不同三维设计软件的文件&#xff0c;这对于工程师来说其实是一件比较麻烦的事。 为什么…

性能测试JMeter学习笔记(脚本增强和命令行操作)

HTTP的Cookie管理器 在根节点下&#xff0c;添加“HTTP Cookie管理器”&#xff08;注意是根节点&#xff09; Cookie管理器作用&#xff1a;只要响应里有Cookie&#xff0c;就自动存进Cookie管理器&#xff0c;而后在后续的请求中&#xff0c;自动携带cookie JMeter脚本增强…

奥威BI系统:零编程建模、开发报表,提升决策速度

奥威BI是一款非常实用的、易用、高效的商业智能工具&#xff0c;可以帮助企业快速获取数据、分析数据、展示数据。值得特别注意的一点是奥威BI系统支持零编程建模、开发报表&#xff0c;是一款人人都能用的大数据分析系统&#xff0c;有助于全面提升企业的数据分析挖掘效率&…

教资学习笔记总结

科目一 科目二 第一章 教育基础知识和基本原理 第一节 教育的认识 1.教育的概念 教育的词源&#xff1a;教育一词最早出现于《孟子尽心上》&#xff1a;“得天下英才而教育之”许慎在《说文解字》中最早解释教育&#xff1a;“教&#xff0c;上所施&#xff0c;下所效也”…

DNS部署与安全详解(上)

文章目录 一、DNS二、域名组成1. 域名组成概述2. 域名组成 三、监听端口四、DNS解析种类1. 按照查询方式分类&#xff1a;2. 按照查询内容分类&#xff1a; 五、DNS服务器搭建过程1. 先确保服务器的IP地址是固定的2. 安装DNS软件 一、DNS DNS全称Domain Name Service&#xff0…