当前位置: 首页 > news >正文

qgis与qt开发基于vs环境搭建(傻瓜式教程)

嗯,本人因为工作需要所以耗费一些事件摸索着如何搭建这个环境,感觉网上的资料不多,自己找起来也很麻烦,因为是第一次本人踩了不少坑,所以留下这个搭建教程,希望能帮助一些人。

一 正文

进入qgis下载官网,Download · QGIS Web Site,跳过捐赠选项可以直接进入下载 这里选择的是installer 在线下载

下载好之后,右键以管理员身份打开在线安装器,osgeo4w-setup.exe。

需要我们自己选择安装文件,所以选择高级

选择安装路径,这个路径要记录下来,能够让你自己找得到

如果不以管理员身份打开,无法选择all users

这个路径也是同样需要记录,这里存放的主要是缓冲文件。

这里讲一讲我遇到的问题:因为需要请求的数据在国外,所以之后步骤里,在线安装器下载的十分缓慢,而国内的镜像站还都没有资源,部分大文件下载很慢的时候不是你多等一会他就会下载好,而是很大几率崩溃,哪怕是下载好,他也会无法使用甚至报错。

这里有两个解决办法,一个是从官方文档里下载你所需要的大文件,然后放在缓冲目录的指定目录下,至于放在哪个目录,你需要去你设置的缓冲文件夹里查找需要的,对应压缩包,目前下载的文件放在哪,你就可以将大文件放在那里,然后重新进行安装。

上面这个解决办法很难办,到后来要下载的大文件太多,太杂,部分还无法识别,看个人情况。

第二种解决方法就要简单很多,我是在凌晨一点左右的时候进行下载,这时间内国内使用数据流量的人数不多,网络运营商分配的流量通道也更大,所以下载国外数据也很快。

个人认为第二种方法比较容易一点。

这里的下载路径可以任选,有的地方第二种速度很快,有的地方第一种速度快。

下面是需要安装的东西。

点击skip就可以选中下载

下面是选择完gdal之后我下载的,当时因为下载速度太慢去官网下载的大文件压缩包

要注意,这里也有大问题。

尽量选择在这个在线下载器里面安装qt,并且版本只能是qt5,目前qgis对qt6还不太适配,作者当时花费半天时间搭建qt6与qgis,但是无论怎么尝试都会报错,我这里怀疑应该是接口搭配的不太对,无法调用。

如果你实在是想自己下载qt也尽量选择在线下载器里面的版本,能够确保适配。

这里就不一一展示下去了,每个人需要的库文件不同,我这个是进行基本开发时没什么问题,能够运行tif格式文件

接下来就是一直点一些同意协议之类的,然后到下载这一步,他会自动安装一些额外需要的依赖项之类的东西

大部分缓冲文件都会放在这个release文件夹里面。

安装结束,开始vs环境搭建。

vs环境搭建,首先你要确保已安装Qt VS Tools插件(扩展 → 管理扩展 → 搜索Qt安装)

点击继续但无需代码,我这里是下载好了的

配置环境变量。

以下都需要查看你自己的路径!!!!!!!!!!!!!!

在你的path环境路径下,加上这些库文件,主要是使得代码运行时候能够找到对应库,使用头文件。注意:你要查看你自己的文件安装在哪

设置好环境变量记得重启。

之后

打开 Visual Studio 2022。

确保已安装 Qt VS Tools 插件(扩展 → 管理扩展 → 搜索Qt安装)。

点击菜单栏 “扩展” → “Qt VS Tools” → “Qt Versions”。

  1. 点击 “Add” 按钮:

    • Version name:输入Qt5-OSGeo4W

    • Path:浏览到D:\OSGeo4W\apps\Qt5\bin\qmake.exe

  2. 点击 “OK” 保存。列表中应出现该版本,左侧有绿色对勾表示默认。

接下来,我们就可以创建qt项目了

下面这部分需要点击debug旁边的红色减号 目前qgis不支持debug 会报错

首先确保自己能够正确运行,如果没运行请检查环境变量,以及vs拓展下载问题

配置项目属性(核心)

右键项目 →“属性”,在左上角将“配置”设为“所有配置”“平台”设为“x64”

添加 Qt XML 模块

进入“Qt Project Settings”,在“Qt Modules”文本框中追加;xml,使其变为:

core;gui;widgets;xml
附加包含目录(头文件路径)

进入“C/C++” → “常规” → “附加包含目录”,将以下一行内容完整复制进去:

D:\OSGeo4W\include;D:\OSGeo4W\apps\qgis-ltr-dev\include;D:\OSGeo4W\apps\Qt5\include;D:\OSGeo4W\apps\Qt5\include\QtCore;D:\OSGeo4W\apps\Qt5\include\QtGui;D:\OSGeo4W\apps\Qt5\include\QtWidgets;D:\OSGeo4W\apps\Qt5\include\QtXml

这部分要参考你自己的路径

附加库目录(.lib 文件路径)

进入“链接器” → “常规” → “附加库目录”,添加:

text

D:\OSGeo4W\apps\qgis-ltr-dev\lib;D:\OSGeo4W\apps\Qt5\lib

附加依赖项(需要链接的库)

进入“链接器” → “输入” → “附加依赖项”,添加以下一行(如果已有其他内容,用分号追加在后面):

qgis_core.lib;qgis_gui.lib;qgis_analysis.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Xml.lib

预处理器定义

进入“C/C++” → “预处理器” → “预处理器定义”添加(在原本基础上)

_USE_MATH_DEFINES;NOMINMAX;_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING

C++ 语言标准
  • 进入“C/C++” → “语言” → “C++语言标准”,选择“ISO C++17 标准 (/std:c++17)”

所有环境搭建完成。

#include <QApplication>
#include <QMainWindow>
#include <QMessageBox>
#include <qgsapplication.h>
#include <qgsmapcanvas.h>
#include <qgsrasterlayer.h>
#include <qgsproject.h>
#include <qgsmaptoolpan.h>
#include <QDebug>

int main(int argc, char *argv[])
{
// 初始化 QGIS 应用
QgsApplication app(argc, argv, true);
QgsApplication::setPrefixPath("D:/OSGeo4W/apps/qgis-ltr", true);
app.initQgis();

// 创建主窗口
QMainWindow window;
window.setWindowTitle(QString::fromLocal8Bit("QGIS 加载 TIFF 测试"));

// 创建地图画布
QgsMapCanvas *canvas = new QgsMapCanvas();
canvas->setCanvasColor(Qt::white);
window.setCentralWidget(canvas);

// 你的 TIFF 文件路径(请根据实际情况修改)
QString tiffPath = QString::fromLocal8Bit("D:/tiff_picture/SR_50M_alaska_nad.tif");

// 创建栅格图层
QgsRasterLayer *layer = new QgsRasterLayer(tiffPath, QString::fromLocal8Bit("阿拉斯加影像"), "gdal");

if (!layer->isValid())
{
QMessageBox::critical(nullptr,
QString::fromLocal8Bit("错误"),
QString::fromLocal8Bit("无法加载 TIFF 文件:\n%1").arg(tiffPath));
qDebug() << "图层加载失败!";
delete layer;
return 1;
}

// 添加图层到项目和画布
QgsProject::instance()->addMapLayer(layer);
canvas->setLayers({layer});
canvas->setExtent(layer->extent());
canvas->refresh();

// 添加平移工具
QgsMapToolPan *panTool = new QgsMapToolPan(canvas);
canvas->setMapTool(panTool);

// 显示窗口
window.show();

// 进入事件循环
int ret = app.exec();

// 清理
app.exitQgis();
return ret;
}

这是我的测试代码

VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法

VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法_vs打开ui文件闪退-CSDN博客

http://www.jsqmd.com/news/514844/

相关文章:

  • COMSOL电磁超声仿真:L型铝板裂纹检测的电磁超声测量技术
  • 2026年半导体行业ESD闸机专业度评测报告:上海小区闸机/上海工业园区闸机/上海工地实名制闸机/上海无尘车间闸机/选择指南 - 优质品牌商家
  • CD192(CCR2):炎症趋化机制解析与药物研发关键技术
  • 压缩空气储能系统及其释能阶段模型研究及仿真程序编写——附相关文档文献
  • Win10下用Conda虚拟环境离线安装PyTorch的保姆级教程(附CUDA版本选择指南)
  • OpenClaw学术助手:ollama-QwQ-32B自动整理参考文献
  • 2026混凝土外加剂优质推荐榜防水防裂选型指南:混凝土外加剂/混凝土防水剂/渗透结晶防水材料/纳米抗裂减渗剂/聚丙烯抗裂纤维/选择指南 - 优质品牌商家
  • Java爬虫新选择:HtmlUnit无头浏览器实战(附IT之家数据抓取完整代码)
  • Granite TimeSeries FlowState R1模型解析:深入其内部数据结构与优化
  • Youtu-Parsing与GitHub Actions结合:实现文档解析模型的CI/CD流水线
  • 嵌入式Linux日志滚动覆盖实战:zlog配置与优化
  • 写作者与程序员的利器:Qwen3-4B-Instruct在内容创作与代码生成中的惊艳表现
  • 2026年工业夹爪品牌推荐,行业生产标准详解指南 - 品牌2026
  • 出一次规划垂直泊车路径规划matlab代码。 回旋曲线对泊车路径进行优化,图片仅供参考
  • 避坑指南:Cisco Packet Tracer 7.3游客模式 vs 账号登录的隐藏限制详解
  • 【Unity】贪吃蛇-基础框架
  • AIGlasses_for_navigation应用构建平台:基于Dify实现低代码导航AI工作流
  • 2026冶金高温高压工况磁翻板液位计推荐榜:氟利昂液位计/氟利昂液位计/氨水液位计/氨水液位计/氯气流量计/氯气流量计/选择指南 - 优质品牌商家
  • BEYOND REALITY Z-Image实际作品:无磨皮、无失真、保留毛孔纹理的高清人像
  • Pandownload与网盘直链下载助手深度测评:不限速与体验的全面对比
  • SEO_详解SEO核心关键词研究与布局策略
  • Qwen-Image定制镜像保姆级教程:RTX4090D+CUDA12.4环境搭建与Qwen-VL推理脚本详解
  • 2026年电爪品牌推荐,高精密夹持选型全攻略 - 品牌2026
  • 终极指南:如何在Linux上轻松安装Realtek 8852CE无线网卡驱动
  • 2026年新能源光伏领域优质螺母厂家指南:双头螺栓/国标螺栓/圆螺母/塔吊螺栓/外六角螺栓/尼龙螺母/开槽螺母/选择指南 - 优质品牌商家
  • 避坑指南:在CentOS 7上独立部署Apache Atlas 2.0,搞定Hadoop 3.1.1、Hive 3.1.0和HBase 2.2.2的版本兼容
  • labelCloud:3D点云标注的终极解决方案,快速生成高质量训练数据
  • 手把手教你用MATLAB实现一阶RC低通滤波器(附完整代码与避坑指南)
  • 半导体探针卡选购避坑指南:从MEMS技术到3D封装测试的5个关键指标
  • 为中文点赞,为汉字称好!世界上最美的文字,最方便的语言