很多刚接触 Qt 的人,第一反应都是去用 Qt Creator,但真正到了团队项目里,Visual Studio 2019 仍是绕不开的开发环境,尤其是做 Windows 桌面 C++ 项目的朋友。Qt 本身支持 MSVC 编译器,和 VS2019 配合起来非常自然。这篇文章会把从零开始的安装流程、组件选择、第一个测试程序的编译运行,以及我调试环境时踩过的各种坑全部写出来。无论你是在做课程设计,还是在公司里维护一个 Qt 桌面程序,这套流程都适用。读完你不会只看到一个个“下一步”,而是明白每一步为什么要这样选。我会尽量用大白话,把版本匹配、编译器选择、路径配置这些最容易出错的地方讲透。
1. 为什么选 VS2019 做 Qt 开发环境?
1.1 Qt 与 Visual Studio 的两种协作方式
Qt 的 Windows 开发有两条常见路线:一条是纯 Qt Creator + MinGW 编译器,另一条是 Visual Studio 插件 + MSVC 编译器。前者对个人开发者很友好,开箱即用,界面也简单;但换成 VS2019 之后,好处非常明显:调试体验、代码提示、团队统一工具链,以及和已有的 C++ 工程无缝衔接。
用 VS2019 开发 Qt 的核心是“Qt VS Tools”这个扩展插件。它负责把 Qt 的编译规则、头文件路径、库文件路径自动注入到 Visual Studio 的工程里。也就是说,你不需要手动去改一堆包含目录和附加依赖项,插件会自动把Qt5Cored.lib、Qt5Widgetsd.lib这些库关联到项目里,省掉极其容易出错的配置环节。
1.2 平台的本质:MSVC 和 MinGW 的抉择
Qt 官方针对 Windows 提供两套常见二进制包:MinGW 版本和 MSVC 版本。MinGW 版的 Qt 内部使用 GNU 编译器,适合和 Qt Creator 搭配;而 MSVC 版 Qt 必须配合微软的 VC++ 编译器,也就是 VS2019 的 MSVC v142 工具集。
很多新手在 VS2019 里新建 Qt 项目后直接报错“无法打开包含文件 QtWidgets/QApplication”,一个常见原因就是卡在 Qt 库包类型和编译器不匹配:装了 MinGW 版 Qt,却用 VS 的 MSVC 去编译。所以在安装前,必须先想清楚用什么编译器。如果决定用 VS2019,那 Qt 包就一定要选带msvc2019_64字样的那一项。
1.3 推荐的安装顺序
安装顺序其实没有那么严格,但我个人建议先装 VS2019,再装 Qt。原因是 Qt 在线安装器在安装过程中会扫描系统里已有的编译器,先装 VS 会让它更准确地识别 MSVC 环境。另外,Qt VS Tools插件是在 VS 里安装的,如果 VS 还没装,插件也没法用。
建议的完整顺序是:VS2019 → Qt 库 → Qt VS Tools 扩展 → 配置 Qt Versions → 新建测试工程。这样流程上最顺,也最少出现莫名奇妙的路径问题。
2. 安装前必须搞清楚的版本匹配和组件选择
2.1 Qt 版本和 VS2019 的兼容关系
这部分是很多人容易懵的地方。Qt 版本、VS 版本、插件版本三者需要互相匹配,不是随便抓一个最新装就能跑。以 VS2019 为例,它对应的 MSVC 工具集是 v142。因此,你应该选择的 Qt 包是包含MSVC 2019 64-bit或msvc2019_64字样的版本。
比较稳妥的选择是 Qt 5.15.2,这是 5.15 系列里最后发布的一个开源长期支持(LTS)版本,官方对 VS2019 的支持也最成熟。如果你追求新特性,也可以考虑 Qt 6.2 或更高版本,但尽量选带“MSVC 2019”字样的离线/在线安装包,不要直接选带“MSVC 2022”字样的包,因为那通常对应 VS2022 的 v143 工具集。
| 开发工具 | 编译器工具集 | 对应 Qt 包关键字 |
|---|---|---|
| VS2019 | MSVC v142 | msvc2019_64 / MSVC 2019 64-bit |
| VS2022 | MSVC v143 | msvc2022_64 / MSVC 2022 64-bit |
| 不装 VS | MinGW | mingw73_64 / mingw81_64 等 |
如果你已经是 VS2019 用户,那就别去碰 Qt 的 MinGW 包,直接用msvc2019_64。这个关键点直接在源头上避开大部分编译错误。
2.2 安装 VS2019 时应该勾选哪些组件
VS2019 的安装过程本身不算复杂,但新手很容易因为少勾了组件,导致后面编译 Qt 工程时找不到 C++ 工具链。
在“工作负载”这一页,必须勾选“使用 C++ 的桌面开发”。这一步会默认包含 MSVC v142 生成工具、Windows 10 SDK、C++ 标准库等核心组件。如果不确定,建议把右侧的“MSVC v142 x64/x86 生成工具”和“Windows 10 SDK”都勾上。X64 和 X86 生成工具都要有,因为 Qt 库和 Windows 本身可能需要目标平台切换。
还有个细节:如果机器上已经装了 VS2022,再装 VS2019 时不用担心,两者可以共存,但 Qt VS Tools 插件的版本要对应 VS2019 的扩展目录,后面我会提到这个坑。
2.3 Qt 在线安装器的组件选择逻辑
去 Qt 官网下载在线安装器时,最好注册一个账号,因为开源版安装也需要登录 Qt 账户。安装器启动后会让你选择安装的 Qt 版本,展开 Qt 5.15.2 或 Qt 6.x 的树形列表,你会看到一堆子项,比如MSVC 2019 64-bit、MSVC 2019 32-bit、MinGW 8.1 64-bit等。
这时你只需要勾选MSVC 2019 64-bit,以及它下面的“Qt Debug Information Files”和“Qt 源码”(Sources),这两个主要用于调试和查看源码,建议勾上。不要贪多,把很多用不到的大模块全勾上只会让安装时间暴增。如果你的项目后面需要 WebEngine、Charts 等扩展模块,再回头重新运行安装器补充勾选即可。
安装路径我建议直接用默认的C:\Qt,或者改成一个纯英文且没有空格和特殊符号的路径。Qt 的编译工具链对一些非英文字符路径非常敏感,路径里有中文会让后续windeployqt部署和某些调试场景出现莫名其妙的问题。
3. 一步步安装操作实录
3.1 安装 VS2019 的实操步骤
先说安装 VS2019。运行安装程序后,第一页选“工作负载”,勾选“使用 C++ 的桌面开发”,这时右侧会自动勾上一堆组件。再切到“单个组件”标签,搜索“Windows 10 SDK”,选最新版本;搜索“v142”确认有 MSVC v142 生成工具。如果项目还要写 CMake,可以顺便勾上 CMake 工具,虽然 Qt VS Tools 默认用 qmake,但有些团队偏爱 CMake。
安装位置页,建议保持默认的C:\Program Files\Microsoft Visual Studio。安装时间取决于网络,等它跑完即可。装完第一次打开 VS2019,进入工具 → 扩展 → 管理扩展,这一步可以暂时不用操作,因为后面要单独装 Qt VS Tools。关键是确认“C++ 的桌面开发”工作负载已经正确完成,测试方法很简单:新建一个空 C++ 控制台项目,能编译并通过,就说明 MSVC 环境没问题。
3.2 安装 Qt 并选择 MSVC 2019 64-bit
接着安装 Qt。打开 Qt 在线安装器,登录后选择组件。切记不要在“附加库”里重复选一堆。只需要在列表中找到Qt 5.15.2,展开后勾选MSVC 2019 64-bit,以及该节点下的 Qt Charts(如果以后需要画曲线图)、Qt Debug Information Files、Sources。
安装器还会询问是否安装 Qt Creator,这不是必须的,但如果你平时也喜欢用 Qt Creator 做快速原型,可以保留。装完之后,去C:\Qt\5.15.2\msvc2019_64目录下,看看是否存在bin\qmake.exe和lib\cmake这些关键子目录。如果存在,说明 Qt 的 MSVC 库已经就位。
一个常见的困惑是:Qt 安装器里找不到MSVC 2019 64-bit怎么办?这通常是因为你下载的在线安装器版本较新,默认界面隐藏了旧版 Qt。解决办法是安装器登录后,在组件选择页上方勾选“Archive”(归档)分支,或者直接从 Qt 官网的在线安装器说明里使用qt archive路径,找到 5.15.2 的 msvc2019 包。这里只要耐心找一下。
3.3 安装 Qt VS Tools 扩展
Qt VS Tools 是让 VS2019 能够识别和编译 Qt 项目的关键插件。打开 VS2019,在菜单栏选“扩展”→“管理扩展”,左侧选“联机”,搜索框输入Qt Visual Studio Tools。找到后,点击“下载”,安装完成后关闭 VS 并重新启动。
如果在线扩展市场里死活搜不到,也可以直接去 Qt 的官方下载站点下载.vsix安装文件,然后通过 VS 的“扩展”菜单选择“安装扩展”导入。装完后,VS 菜单栏会出现一个“Qt VS Tools”菜单项。注意,VS2022 和 VS2019 的 Qt VS Tools 版本要分开装,不要混用。用扩展市场里的版本通常能自动识别 VS 版本,问题不大。
4. 从插件配置到第一个测试程序跑起来
4.1 在 VS2019 里添加 Qt 版本
重启 VS2019 后,点击菜单栏的“扩展”→“Qt VS Tools”→“Qt Versions”。在弹出的窗口里选择“Add new”,给这个 Qt 版本起一个容易辨认的名字,比如Qt 5.15.2 MSVC2019 64,路径填到C:\Qt\5.15.2\msvc2019_64。
填好路径之后,VS 会自动读取该目录下的bin\qmake.exe,并在列表里显示“Qt Version”为 5.15.2、“Msbuild Target”等信息。如果这里显示一片空白,说明插件没有读到 Qt 信息,优先检查路径是不是填到了msvc2019_64这一层,而不是外面的C:\Qt\5.15.2或者直接填到了C:\Qt。
4.2 建立一个最简单的 Qt Widgets 测试工程
在 VS2019 中新建项目,搜索“Qt”,这时会看到多个模板,比如“Qt Console Application”“Qt Widgets Application”“Qt Class Library”等。想验证整体环境是否可用,我建议先建一个“Qt Widgets Application”。
填写项目名时,注意项目路径不要包含中文、空格或特殊符号,建议用D:\QtDemo这种纯英文路径。创建好之后,“解决方案资源管理器”里会看到项目文件、生成文件和一个形式的 UI 文件。
接着写一个最简单的测试逻辑。在main.cpp里,确认代码包含<QApplication>和<QLabel>,创建一个标签并显示出来。示例代码可以这样写:
#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Hello Qt VS2019"); label.resize(280, 120); label.show(); return app.exec(); }然后点击工具栏上的“本地 Windows 调试器”或按 F5 编译运行。如果一切正常,你会看到一个显示“Hello Qt VS2019”的小窗体。这个测试工程能跑起来,就代表 Qt 库和 VS 工具链已经打通。
4.3 用命令行 qmake 验证安装
除了用 VS 工程验证,还可以用命令行方式快速确认 Qt 环境本身没问题。打开“开始菜单”,找到“Developer Command Prompt for VS2019”,进入测试项目目录后执行以下命令:
qmake -project qmake nmake如果你的 PATH 环境变量里没配 Qt,可以在命令前补上完整的 Qt bin 路径:
C:\Qt\5.15.2\msvc2019_64\bin\qmake.exe -project C:\Qt\5.15.2\msvc2019_64\bin\qmake.exe nmake只要最终能生成 exe,说明 Qt 的 MSVC 库和 VS 自带的 nmake 工具链都没问题。这种方式也更适合排查插件配置问题:如果命令行能过而 VS 里报错,那多半是 Qt VS Tools 的路径或模块配置没同步。
5. 常见错误和排查方法:我踩过的那些坑
5.1 “无法打开包含文件 QtWidgets/QApplication”
这个问题出现率极高。首先确认安装的 Qt 包是不是msvc2019_64,然后检查 VS 的 Qt VS Tools → Qt Versions 中是否已经正确指向了该目录。如果没问题,再看项目属性 → VC++ 目录 → 包含目录,插件正常时会自动加上C:\Qt\5.15.2\msvc2019_64\include等路径。
还有一种情况是项目里引入了 Qt 模块但插件没更新。打开“扩展”→“Qt VS Tools”→“Qt Project Settings”,在“Qt Modules”标签里勾选Core、GUI、Widgets,然后重新生成项目。这样能解决大部分找不到 Qt 头文件的问题。
5.2 运行测试程序提示缺少 Qt5Widgets.dll
用 VS 的调试器直接运行时,如果系统 PATH 里没有指向 Qt 的bin目录,就会在程序启动时提示缺少 DLL。临时解决办法是把C:\Qt\5.15.2\msvc2019_64\bin加到系统 PATH 环境变量里;正规做法是用 Qt 自带的windeployqt工具,把运行所需的 DLL 复制到可执行文件目录。
在命令行中进入项目生成目录(比如x64\Debug),执行:
C:\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe YourApp.exe这个工具会分析依赖并拷贝 Qt 的平台插件和核心 DLL,之后把这个目录拷到别的电脑上通常也能直接运行。注意如果是 Debug 编译,最好带--debug参数。
5.3 编译链接时报 LNK1112 或 LNK2019
LNK1112 通常表示模块计算机类型和目标的计算机类型冲突,常见于 32 位和 64 位混用。解决办法是在 VS 工具栏上把“解决方案平台”切换成“x64”,同时确认 Qt 安装的是 64 位 MSVC 版本,两者要匹配。如果还是不行,在项目属性 → 链接器 → 命令行里,检查是否有额外的库路径指向了 x86 目录。
LNK2019 则多半是因为 Qt 模块没有完全链接。到 Qt Project Settings 里把需要的模块全部勾上,然后重新生成。如果项目中用到了QXmlStreamReader,记得勾上Qt XML,Widgets 程序基本需要Core、GUI、Widgets三个模块。
5.4 中文路径导致的编译失败
这一点我特别想强调:Qt 的工具链在传统 qmake 体系下对中文路径支持不太好。如果项目放在D:\项目代码\TestQt这种目录下,编译时可能出现“无法打开输入文件”“fatal error C1083”等奇奇怪怪的报错。
建议把所有 Qt 相关的工程路径都用英文命名,比如D:\qt_workspace。如果你有中文路径的历史工程,先复制到一个英文路径下再重新打开生成一次,很多诡异问题会自动消失。除此之外,源码文件建议保存为 UTF-8 编码。VS2019 自带的源字符集设置也改为“使用 Unicode 字符集”,可以避免中文字符串在界面里变成乱码。
5.5 断点无法命中和调试异常
Qt 程序在 VS 下无法命中调试断点,先确认顶上编译模式是“Debug”,因为 Release 模式不会生成完整调试信息。然后确认项目属性 → C/C++ → 调试信息格式是不是“程序数据库”。如果用了 Qt 的 qmake 生成 vcxproj,通常插件会自动处理好,但手动改过头文件后可能会破坏这些设置。
高级一点的做法是打开 Qt VS Tools 的工具 → 选项,在“Debugger”设置里选中对应 Qt 版本的调试信息路径。如果安装了 Qt Debug Information Files,那么调试时能看到 Qt 内部的函数调用,排查问题会更方便。
5.6 插件菜单是灰的或没有“Qt Versions”
如果扩展安装成功但菜单不可用,最常见原因是当前没有打开 Qt 项目。VS 里只有打开了工程文件,扩展菜单才真正可用。另一种情况是你安装的是基于 CMake 的 Qt 项目,这时项目里不会自动出现 qmake 相关配置,但插件仍然可以通过 CMakePresets 与 Qt 关联。建议你先新建一个 Qt Widgets 模板工程,插件菜单就会正常亮起来。
5.7 环境变量 PATH 里的 Qt 版本冲突
如果电脑里安装过多个 Qt 版本,而且把多个 Qt 的 bin 目录都加到了 PATH 里,就可能导致运行不同版本程序时载入错误的 DLL。比如在跑 Qt6 程序时却加载了 Qt5 的 Qt5Core.dll,崩溃点非常诡异。建议不要在 PATH 里同时塞多个 Qt 版本的 bin 目录,只放你当前最常用的那个,其它环境用临时切换到命令行里操作,或者通过 Qt VS Tools 的版本管理来切换。
6. 版本匹配与常用配置速查
把最容易出错的信息汇总成一张速查表,后面重装环境时对照着处理就行:
| 问题 | 常见原因 | 建议解法 |
|---|---|---|
| 没有 MSVC 2019 选项 | 在线安装器默认隐藏旧版 Qt | 勾选 Archive 分支,找到 5.15.2 |
| 编译器报 v142 无效 | VS2019 没装完整 | 工作负载安装“使用 C++ 的桌面开发” |
| 找不到 Qt 头文件 | 插件没有刷新 Qt 版本 | 扩展 → Qt VS Tools → Qt Versions |
| 找不到 Qt 调试库 | 用错 Qt 包或平台集 | 确认开关是 Debug + x64 + msvc2019_64 |
| 缺少 DLL | PATH 未配置 | 用 windeployqt 部署 |
| 插件菜单灰色 | 未打开 Qt 项目 | 新建 Qt 项目再操作 |
| 中文乱码 | 源文件编码不对 | 存为 UTF-8,VS 目标字符集设为 Unicode |
关于 qmake 工程的附加配置,也可在属性页确认几个关键点:C/C++ → 附加包含目录,链接器 → 附加库目录,以及“Qt Project Settings”里的 Qt Modules。这三个地方是排查编译错误的入口,基本每次报错都能在这里找到线索。
7. 一些工程上的建议
如果你只是想把 Qt 环境跑通并长期稳定使用,我在实际操作中的体会是:不要频繁在 VS2019 和 VS2022 之间来回切换同一个 Qt 工程。Qt 的 vcxproj 文件通常和各版本的工具集绑定比较紧,换 IDE 后如果提示“需要平台工具集升级”,升级倒是不难,但如果你团队里有人还在用 VS2019,这个 vcxproj 一旦被 VS2022 保存成 v143 工具集,其他人就要手动改回 v142。所以,关系到多人协作的项目,一定先约定好统一的 IDE 版本和 Qt 包版本。
最后再分享一个小技巧:Qt 的库包安装好后,不要急着复制整个安装目录到别的机器上。Qt 5.15 及以上版本在部分模块上会在安装时写入一些路径信息,直接拷贝很可能会出现找不到编译器或 ICU 依赖。干净的做法是到某台已经配好的机器上,用 windeployqt 把运行依赖导出到你的程序目录,这远比直接拷贝几 GB 的 Qt 安装目录更稳妥。
环境搭建说难不难,说简单也不简单。只要记住“MSVC 版 Qt 配 VS2019、MinGW 版 Qt 配 Qt Creator”这个大原则,再把路径问题约束在英文目录里,后续运行测试程序就是一个顺手的事。希望这套流程能帮你省下排查环境半天起步的时间。