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

【AI时代速通QT】第七节:Visual Studio+Qt 开发指南

目录

前言

一、Part 1: 创建你的第一个 VS Qt 项目

二、Part 2: 核心解密:VS项目属性深度配置

2.1 通用设置 (General)

2.2 调试设置 (Debugging)

2.3 调试利器:开启控制台窗口

2.4 添加第三方库

三、Part 3: 管理Qt版本和模块

结语


 🎬 攻城狮7号:个人主页

🔥 个人专栏:C++QT跨平台界面编程

⛺️ 君子慎独!

 🌈 大家好,欢迎来访我的博客!
⛳️ 此篇文章主要介绍 Visual Studio+Qt 开发指南
📚 本期文章收录在《C++QT跨平台界面编程》,大家有兴趣可以自行查看!
⛺️ 欢迎各位 ✔️ 点赞 👍 收藏 ⭐留言 📝!

前言

        对于许多Windows平台的C++开发者来说,Visual Studio无疑是最强大、最熟悉的IDE。而Qt作为一个成熟的跨平台C++图形界面库,其强大的功能和优雅的设计也备受青睐。当这两者结合,我们便能借助VS强大的调试工具和代码编辑体验来高效地开发Qt应用程序。

        然而,从Qt Creator转向Visual Studio的开发者,或者初次尝试VS+Qt组合的新手,常常会因为项目配置问题而“踩坑”,例如程序无法启动、找不到DLL、资源文件加载失败等。这些问题大多源于对VS项目配置系统的不熟悉。

        本篇文章将以一个简单项目为例,手把手地带你走过从创建项目到完成所有关键配置的全过程。我们的目标不仅仅是“怎么做”,更是要弄清楚“为什么要这么做”,让你彻底告别配置的烦恼,专注于代码本身。

        准备工作:在开始之前,请确保你已经在Visual Studio中成功安装了 Qt VS Tools 扩展插件。这是连接VS和Qt的桥梁,一切工作都将围绕它展开。(还不知道怎么安装就参考本专栏的第一节末尾部分,或者自行搜索或问AI)

一、Part 1: 创建你的第一个 VS Qt 项目

        让我们从“无”到“有”,创建一个基础的Qt窗口应用程序。下面以vs2015为例,其他版本区别不大。

(1)新建项目: 打开Visual Studio,选择 `文件` -> `新建` -> `项目`。在弹出的窗口中,找到 `Visual C++` -> `Qt` 分类,并选择 `Qt GUI Application`。

(2)设置路径: 为你的项目命名(例如:`vsqt`),并选择一个合适的存放位置。这里有一个小技巧,建议取消勾选“为解决方案创建目录”。这样做可以让你的 `.sln` 和 `.vcxproj` 文件与项目文件夹在同一层级,使目录结构更扁平、更清晰。

(3)Qt向导: 点击“确定”后,会进入Qt VS Tools的配置向导。

    *   第一个界面直接点击“下一步”。

    *   第二个界面让你选择项目类型和需要包含的Qt模块。对于初学者,保持默认的 `Qt Widgets Application` 即可,`QtCore` 和 `QtGui` 模块也会被自动勾选。

    *   第三个界面是关键。在这里,我们可以设置主窗口的基类。默认是 `QMainWindow`,但对于简单的对话框或窗口,我们可以选择更轻量的 `QWidget`。在“类名”处输入一个符合大驼峰命名法(PascalCase)的名称,如 `vsqt`。同时,建议勾选下方的“所有文件名小写”,这有助于在不同操作系统(特别是大小写敏感的Linux)之间移植代码时避免不必要的问题。

(4)完成创建: 点击“完成”,VS会自动生成所有必要的文件。

        此时,在你的解决方案资源管理器中,可以看到如下的项目结构:

        *   `vsqt.h` / `vsqt.cpp`: 主窗口类的头文件和源文件。

        *   `main.cpp`: 包含 `main` 函数的程序入口文件。

        *   `vsqt.ui`: 使用Qt Designer设计的UI界面文件。

        *   `vsqt.qrc`: Qt资源文件,用于管理图片、翻译文件等。

        *   Generated Files: 这是一个非常重要的虚拟文件夹。Qt的 `moc`(元对象编译器)、`uic`(用户界面编译器)和 `rcc`(资源编译器)在编译期间生成的中间文件都会在这里显示。这使得在VS中可以直观地看到所有参与编译的文件,与Qt Creator将它们隐藏起来的做法不同。

        现在,你可以直接按 `F5` 运行程序,一个空白的窗口应该会顺利弹出。第一步已经成功迈出!

二、Part 2: 核心解密:VS项目属性深度配置

        能运行只是开始,一个健壮的项目配置才是高效开发的保障。右键点击解决方案资源管理器中的项目名称(`vsqt`),选择“属性”,让我们来深入探索其中最重要的几个设置。

2.1 通用设置 (General)

        路径: `配置属性 -> 常规`

        这是我们首先要关注的地方。

(1)输出目录 (Output Directory):

    *   作用: 决定生成的 `.exe` 文件最终存放在哪里。

    *   建议: 默认值通常是在项目目录下的 `$(Platform)\$(Configuration)\`,这会导致输出文件散落在各处。一个更好的实践是将其统一输出到一个公共的 `bin` 目录,例如 `$(SolutionDir)bin\$(Platform)\$(Configuration)\`。这里的 `$(SolutionDir)` 是一个宏,代表解决方案文件 `.sln` 所在的目录。这样设置后,无论是32位/64位还是Debug/Release版本,所有的可执行文件都会被清晰地组织在解决方案目录下的 `bin` 文件夹中。

    *   好处: 集中管理输出,便于后期打包发布,也为下一步设置工作目录打下基础。

(2)平台工具集 (Platform Toolset):

    *   作用: 指定用于编译项目的编译器和库。

    *   注意: 这个值必须与你安装的Qt版本所匹配。例如,如果你下载的Qt是为 `msvc2015_64` 编译的,那么这里就应该选择 `Visual Studio 2015 (v140)`。版本不匹配是导致链接错误的常见原因之一。

2.2 调试设置 (Debugging)

        路径: `配置属性 -> 调试`

        这是整个配置过程中最关键、也最容易被忽略的一步。

(1)工作目录 (Working Directory):

    *   作用: 定义了程序启动时所在的当前目录(Current Working Directory)。程序在查找动态链接库(DLLs)、加载相对路径的资源文件(如图片、配置文件)时,会首先从这个目录开始寻找。

    *   致命错误: VS的默认值是 `$(ProjectDir)`,也就是 `.vcxproj` 文件所在的目录。而我们的 `.exe` 文件根据上一步的设置,已经输出到了 `bin` 目录。这就导致了,当你按F5启动调试时,程序在项目目录里启动,但它依赖的Qt DLLs(如 `Qt5Widgetsd.dll`)和它自己都在远处的 `bin` 目录里,自然会因为找不到依赖而启动失败!

    *   正确设置: 必须将工作目录设置为与“输出目录”一致!直接将 `$(SolutionDir)bin\$(Platform)\$(Configuration)\` 复制过来即可。这样就保证了程序在哪里,就从哪里启动,所有依赖和资源都能被正确找到。

2.3 调试利器:开启控制台窗口

        路径: `配置属性 -> 链接器 -> 系统`

        Qt程序默认是窗口程序,你看不到 `printf` 或者 `qDebug()` 的输出。但在开发阶段,这些调试信息至关重要。

(1)子系统 (SubSystem):

    *   作用: 告诉操作系统你的程序是哪种类型。`窗口 (/SUBSYSTEM:WINDOWS)` 类型没有控制台,而 `控制台 (/SUBSYSTEM:CONSOLE)` 类型则会带一个黑色的命令行窗口。

    *   工作原理: 你可能会疑惑,控制台程序的入口是 `main`,窗口程序的入口是 `WinMain`,而我们的Qt代码里只有一个 `main` 函数,它是怎么做到兼容的?其实是Qt在背后为我们做了处理。当你选择 `窗口` 子系统时,Qt的库会自动生成一个 `WinMain` 函数,并在这个函数内部调用我们写的 `main` 函数。

    *   开发建议: 在 Debug 配置下,强烈建议将此项设置为 `控制台 (/SUBSYSTEM:CONSOLE)`。这样,当你运行程序时,会自动弹出一个控制台窗口。所有 `qDebug()` 的输出,包括信号槽连接失败的警告,都会清晰地打印出来,是调试的绝佳帮手。

    *   发布注意: 在最终的 Release 配置中,记得将它改回 `窗口 (/SUBSYSTEM:WINDOWS)`,否则你的用户在运行软件时会看到一个多余的黑框。

2.4 添加第三方库

        当你的项目需要引用OpenCV、FFmpeg等第三方库时,你需要告诉VS去哪里找它们的头文件和库文件。

(1)添加头文件路径:

    *   路径: `配置属性 -> C/C++ -> 常规 -> 附加包含目录`

    *   作用: 在这里添加第三方库的 `include` 文件夹路径。这样,你在代码中 `#include <third_party_header.h>` 时,编译器才知道去哪里寻找这个文件。

(2)添加库文件路径:

    *   路径: `配置属性 -> 链接器 -> 常规 -> 附加库目录`

    *   作用: 在这里添加第三方库的 `lib` 文件夹路径。这只是告诉链接器库文件可能在哪些文件夹里。

(3)指定要链接的库:

    *   路径: `配置属性 -> 链接器 -> 输入 -> 附加依赖项`

    *   作用: 在这里明确填入需要链接的具体 `.lib` 文件名,例如 `opencv_world450d.lib`。注意,Debug版本和Release版本的库文件名通常不同(Debug版本常带'd'后缀),你需要为不同的配置分别设置。

        对于Qt自身的模块,你不需要手动进行这些操作,Qt VS Tools会自动帮你处理好。

三、Part 3: 管理Qt版本和模块

        如果你的项目中途需要增加新的Qt模块(比如网络、数据库),或者想切换Qt版本,该怎么办?Qt VS Tools提供了便捷的图形化界面。

        (1)点击VS菜单栏的 `扩展` -> `Qt VS Tools` -> `Qt Project Settings`。

        (2)在弹出的窗口中,`Version`下拉框可以切换当前项目关联的Qt版本(前提是你已经配置了多个Qt版本)。

        (3)下方的 `Qt Modules` 列表中,你可以随时勾选或取消项目需要的模块,比如 `QtNetwork`、`QtSql`。点击“OK”后,插件会自动更新项目的包含路径和链接库设置,非常方便。

结语

        正确的配置是VS+Qt高效开发的基石。总结一下我们的黄金法则:

        (1)创建项目: 使用Qt VS Tools向导,注意命名规范和文件大小写。

        (2)统一输出: 在项目属性中,将“输出目录”设置为一个集中的 `bin` 目录。

        (3)同步工作目录: 将“调试”中的“工作目录”设置得与“输出目录”完全一致。这是避免“找不到DLL”问题的关键。

        (4)开启控制台: 在Debug模式下,将链接器的子系统改为“控制台”,方便查看调试信息。

        (5)善用插件: 通过Qt VS Tools的图形界面来管理Qt模块和版本。

        掌握了这些配置细节,你就可以把精力完全投入到Qt应用的功能开发中,充分享受Visual Studio带来的强大生产力。

看到这里了还不给博主点一个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!

http://www.dtcms.com/a/394665.html

相关文章:

  • 医疗问诊陪诊小程序:全方位守护就医体验的功能宝库
  • iOS 开发环境搭建完整指南 Xcode 安装配置、iOS 开发工具选择、ipa 打包与 App Store 上架实战经验
  • 【Node.js】Express 和 Koa 中间件的区别
  • 学习路之PHP--TP8+swoole
  • 【从零开始的大模型原理与实践教程】--第五章:动手搭建大模型LLaMA2
  • Vue.js 从入门到实践1:环境搭建、数据绑定与条件渲染
  • “潮涌之江,文兴浙里”文化推动高质量发展主题活动在西湖区调研
  • 【MongoDB】mongoDB数据迁移
  • 《C++多态入门:轻松理解虚函数与多态编程》
  • 虚拟化范式跃迁中的生命周期隐喻与命令哲学——解构Docker容器从抽象实体到可控资源的数字化生存法则
  • OpenLayers地图交互 -- 章节八:平移交互详解
  • AES+RSA 实现混合加密
  • 命名实体识别技术NER
  • 网络验证 一键加密 一键接入验证 加壳加密数盾加盾
  • JDBC组件
  • StandardScaler,MinMaxScaler等四个内置归一化函数学习
  • pandawiki 无法获取模型列表
  • openEuler2403安装宝塔面板
  • Altium Designer(AD) PCB铺铜
  • 解决Django长时间操作中的MySQL连接超时问题
  • 样本量估计原理与python代码实现
  • 0v0.pro 深度评测、 AI 助手篇、80+模型 free
  • ego(9)---ego-planner中的动力学仿真
  • 2025年9月第3周AI资讯
  • ETL详解:从核心流程到典型应用场景
  • SQL查询基础常用攻略
  • 数据结构二叉树(C语言)
  • Domain、BO、BIZ 三层的协作关系
  • 【从小白到精通之数据库篇】Mysql--连接与子查询
  • C++ 函数详解:从基础到高级应用