【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带来的强大生产力。
看到这里了还不给博主点一个:
⛳️ 点赞
☀️收藏
⭐️ 关注
!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!