首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
VS2019+Qt开发配置全攻略:版本选择、扩展安装与常见报错解决
📅 2026/10/16 2:50:02
✍️ 爱科研究院
👁 阅读 3,247
在VS2019里用Qt做开发这个组合对不少Windows桌面程序员来说属于迟早要碰的那类东西。但真正第一次动手的人会发现从下载安装包到VS2019里弹出第一个窗口中间隔着不少事先没人告诉你的决定装Qt 5还是Qt 6装MSVC版还是MinGW版装完之后插件为什么不识别Debug一跑就报找不到Qt5Cored.lib。这篇文章把这些环节一次性捋清楚从Qt安装、VS2019扩展配置到第一个工程跑通、再到打包部署全部走一遍。适合想在VS2019里入门Qt的人也适合已经被各种报错折磨、需要一次系统性排错的人。1. 先别急着动手VS2019里用Qt到底图什么1.1 哪些场景值得用VS2019而不是Qt Creator很多人会问Qt官方不是有Qt Creator吗为什么要绕到VS2019里答案是看你的工作场景。如果你本来就在VS2019里维护一个C老项目或者经常做C和C#混编再或者公司CI、代码审查、插件生态都基于VS这一套那把Qt嵌进来是成本最低的路径——你不用在IDE之间来回切调试器、工程配置、代码风格都在一个地方。但也要反过来认清一件事Qt Creator在纯Qt开发这个场景里依然很舒服新建工程、套件管理、UI设计师联动都是现成的上手路径比VS2019短。所以真正该选VS2019的理由不是Qt Creator不好而是你的工作流已经绑定在VS上了。我见过不少项目界面部分用Qt、业务逻辑用C/C#混合两边还在同一个解决方案里共享编译产物这种场景用VS2019顺理成章。1.2 定位摆正Qt在VS2019里是库工具链决定用VS2019之后心态上还要接受一个现实Qt只是你工程里的一个被集成的库工具链而不是IDE的一部分。你不会像在Qt Creator里那样打开就有套件、双击UI就能改。这里的一切都需要你自己装配Qt本体、VS扩展、工程模板、编译参数本质上就是把一个庞大框架变成VS能用的C库。这个定位想清楚之后后面所有内容就有了一条主线如何让VS2019正确找到Qt的头文件、库文件、可执行文件以及如何让Qt特有的构建步骤元对象编译、UI编译、资源编译在VS的构建体系里正常运行。下面从装Qt这一步开始。2. 版本选择这一步决定后面是省心还是折腾2.1 Qt 5.15.2和Qt 6.x怎么挑打开Qt下载页面第一眼看到的是Qt 6.7、6.5 LTS这种大版本往下翻才是5.15.2这种老版本。新手很容易直接下最新的6.7但下载前建议先看一件事你的Qt组件目录里有没有带msvc2019_64字样的编译包。如果我用的就是VS2019优先选明确提供msvc2019_64的版本。Qt 5.15.2官方开源安装器里最成熟的5.x版本教材多、示例多、网上方案也多拿来学习最稳。Qt 6.x LTS新项目、新学习建议直接用但下载前确认该版本是否还提供VS2019对应的编译包。不同Qt小版本对MSVC工具集的支持是变动的别靠猜。判断标准其实很简单打开Qt安装器看组件树里有多少MSVC 2019 64-bit的选项。如果有剩下的就是个人偏好问题如果没有说明这个Qt版本默认面向更新的VS版本了你强行装下来后面会持续跟编译器版本问题作斗争。2.2 MSVC版还是MinGW版Qt的Windows安装包按编译器分两类MSVC版msvc2019_64、msvc2022_64等和MinGW版mingw81_64等。在VS2019里用Qt必须选MSVC版。原因很直接VS2019用的是MSVC编译器而Qt的库也是按编译器分别编译的。你拿MinGW编译的Qt库去给MSVC程序链接ABI不兼容结果是大量LNK错误。MinGW版是给那些用Qt Creator MinGW工具链的人准备的。如果你从头到尾不打算碰Qt CreatorMinGW版完全不用选省几个GB磁盘。这个原则不仅适用于选择安装包也适用于日后任何从网上找来的第三方Qt库——先看编译器和位数是不是和你的工程一致。64位工程配64位库、Debug配Debug、MSVC配MSVC任何一环错位都会在链接阶段暴露出来。2.3 安装器选择与组件打勾Qt官方提供在线安装器和离线安装包两种方式。在线安装器体积小、组件可选程度高但要登录Qt账号而且组件完全靠下载网络一波动就会卡住离线安装包体积大胜在稳定一次下载完再也不用等。无论选哪一种组件勾选时记住一个最小集组件作用建议Qt 5.15.2 / Qt 6.x → MSVC 2019 64-bit核心库必选Qt Debug Symbols支持底层断点调试建议选SourcesQt源码方便F12跳转学习建议选Qt WebEngineChromium内核的浏览器组件按需体积很大Qt Charts / Data Visualization图表等扩展模块按需Qt Creator官方IDE对VS用户可不选安装路径强烈建议用英文、无空格的路径比如C:\Qt或D:\Dev\Qt。理由不是玄学Qt的qmake、windeployqt、部分工具链脚本对空格和中文路径的兼容性并不好尤其是老版本工具遇到空格路径会输出一堆莫名其妙的问题没必要给自己挖这个坑。3. Qt安装实操从下载到目录落地3.1 离线安装包适合求稳的人以Qt 5.15.2为例下载qt-opensource-windows-x86-64-5.15.2.exe这种离线包后直接双击中途会要求你勾选组件按第2.3节的最小集来就行。离线包的好处是一旦开始装就不会因为断网而失败缺点是下载几个GB比较耗时间。装的时候组件不认识的可以先少选以后缺了什么再补装也行——只要你保留安装器组件可以随时增删。3.2 在线安装器适合想按需下载的人在线安装器qt-unified-windows-x86-64-online.exe启动后会先登录Qt账号没有就现场注册一个免费然后进入组件选择界面。它的组件列表更细默认会勾选一堆你用不到的模块务必按自己的需求精简。装完的位置会多出一个MaintenanceTool.exe以后升级Qt、增删组件都靠它别删。用在线安装器常见的吐槽是下载慢。我的建议很简单别盯着看挂在那让它跑网络环境差就换离线包没必要为一个安装过程搞得太纠结。3.3 安装后的目录结构装完后打开C:\Qt你应该能看到类似这样的结构C:\Qt ├─ 5.15.2 │ └─ msvc2019_64 │ ├─ bin # Qt DLL、qmake、moc等工具 │ ├─ lib # 导入库 .lib 和 .dll │ ├─ include # 头文件 │ ├─ plugins # 平台插件如 platforms/qwindows.dll │ └─ mkspecs # qmake规格文件 └─ MaintenanceTool.exe这里面的bin目录以后会反复用到程序运行时需要的Qt DLL在这里、windeployqt在这里、辅助工具也在这里。安装本身不需要手动改环境变量但如果你想让VS调试时直接找到Qt DLL建议把...\msvc2019_64\bin加到系统PATH里后面的第5.4节再细说。如果安装的是Qt 6.x结构类似只是版本号目录变成了6.x.x。目录名里msvc2019_64字样是给VS2019用的MSVC 2019 64位编译包记住这个命名找错组件全凭它。4. VS2019侧配置扩展、Qt版本与第一次运行4.1 安装Qt VS Tools扩展VS2019不认识Qt靠的是一个官方扩展Qt Visual Studio Tools安装后菜单里叫Qt VS Tools。安装路径菜单扩展 → 管理扩展 → 搜索Qt Visual Studio Tools找到后下载安装然后重启VS2019。这里有个容易被忽略的点扩展安装完成后必须重启VS2019扩展菜单里才会出现Qt VS Tools这一项。如果装完不重启就到处找菜单找不到是正常的。4.2 注册Qt版本扩展装好还只是第一步得让VS2019知道你的Qt装在哪个目录。操作路径扩展 → Qt VS Tools → Qt Versions → 添加。填写时注意两点版本名称随便写自己能看懂就行比如5.15.2 msvc2019_64。路径要选到msvc2019_64这一层也就是包含bin、lib、include的那个目录。选错层级后面所有自动生成的编译参数都会对不上。注册完成后VS2019会弹一个提示说明读取到了qmake路径。看到这个提示说明Qt版本注册成功了。4.3 新建工程从模板到可运行在VS2019里选择文件 → 新建 → 项目搜索Qt能看到Qt Widgets Application、Qt Console Application等模板。日常做桌面工具选Qt Widgets Application即可。工程名和路径同样尽量用英文、无空格避免后面编译某些模块时出现路径兼容性问题。工程生成后VS会自动帮你做几件事设置Qt相关的头文件目录、库目录、预处理宏比如QT_WIDGETS_LIB、以及链接库。这也是为什么前面要注册Qt版本扩展是根据注册路径自动生成这些参数。此时直接按F5如果一切顺利你应该能看到一个空白窗口弹出来。4.4 构建管线里暗藏的三件套Qt程序和普通C工程有一个本质区别编译前要多跑三个代码生成工具。这也是新手最容易被吓到的地方。uic把.ui界面文件编译成ui_xxx.h头文件对应界面设计器里的描述。moc元对象编译器处理带Q_OBJECT的类生成包含信号槽元信息的moc文件。rcc把.qrc资源文件里的图片、样式等打包成二进制资源数据。在VS2019里这三步通常由Qt VS Tools自动触发不需要你手动运行。但当编译报错涉及ui_xxx.h找不到No such slotvtable undefined这些词的时候你就需要想起上面三件套的存在——绝大多数Qt相关的诡异编译错误最终都能归结到某个文件没有被moc正确处理或ui头文件没有自动生成上。具体的排错方法在第5.2节展开。5. 跑通之后的高频坑链接、信号槽、乱码与运行环境5.1 Debug编译找不到Qt5Cored.lib这是VS2019 Qt最经典的报错。Debug编译时提示找不到Qt5Cored.lib注意那个d即debug的标记或者Release时报找不到Qt5Core.lib。排查按这个顺序确认当前活动配置是Debug还是Release。Qt的库目录里Debug库文件名带dRelease不带。确认工程属性里链接器 → 常规 → 附加库目录确实指向了Qt的lib目录。这个值应该是Qt VS Tools自动填的如果你手动改过查一遍。确认不是同时装了多个Qt版本后工程属性里的路径有没有被覆盖。这个报错90%的情况是第2条或第3条导致的而不是Qt没装好。别急着重装Qt先看工程属性。5.2 信号槽不触发或编译报vtable相关错误信号槽是Qt最核心的机制也是新手最容易卡住的地方。典型表现是按钮点击了槽函数就是不执行或者编译报undefined reference to vtable for MainWindow。先说vtable问题。这个错误的根因几乎都是头文件里加了Q_OBJECT宏但moc工具没有对这个头文件生成moc文件。在VS2019里Qt VS Tools默认会自动设置moc选项但如果你是通过添加 → 现有项把一个头文件拖进工程的扩展可能没把它标记为需要moc处理。解决办法右键头文件 → Qt Project Settings → Meta-Object Compiler把选项从默认改成使用Qt或类似表述然后重新生成。再说信号槽不触发。最常见的两种原因在UI设计器里按钮的clicked信号没有连到槽或者连到的槽名拼错了。用ui-btnClick-clicked()连接一个普通成员函数时如果类没有Q_OBJECT很多编译器会报错或直接静默失败。新式连接写法connect(ui-btn, QPushButton::clicked, this, MainWindow::onClicked)如果MainWindow没有Q_OBJECT编译会直接失败。所以凡是涉及信号槽的类Q_OBJECT宏是必备的。还有个容易忽略的小坑如果你在已有工程里给类补加了Q_OBJECT只点生成可能不会触发moc因为VS的增量编译认为头文件没变化。这时要做一次重新生成Rebuild。我在这上面浪费过不少时间最后都是重建解决的。5.3 中文字符串乱码在VS2019里写Qt字符串乱码是高发问题。原因有两层一是源文件编码和编译器读取编码不一致二是Qt的tr/QStringLiteral对字符串字面量的处理方式。我的配置建议是统一用UTF-8。具体操作工程属性 → C/C → 命令行 → 其他选项加一个/utf-8强制MSVC按UTF-8读取源文件。同时源文件保存为UTF-8 with BOM这样哪怕其他同事没加/utf-8VS2019也能正确识别中文注释。字符串本身建议用QStringLiteral(中文)或者tr(中文)包一层不要直接拿const char*去赋值避免编码转换时出问题。5.4 运行时报缺少Qt DLL在VS2019里编F5能编译但程序一运行就弹由于找不到Qt5Cored.dll无法继续执行这是环境问题不是编译问题。原因很简单运行程序时系统需要在PATH里找到Qt的DLL而VS默认不会帮你去Qt目录找。解决方法也简单二选一把...\msvc2019_64\bin加入系统PATH一劳永逸所有工程都能直接跑。在工程属性 → 调试 → 环境里写PATH$(QtPath)\bin;$(PATH)只对本工程生效。注意一个原则Debug工程需要的是带d后缀的DLLRelease工程需要不带d的。如果你把Debug跑起来之后发现进的是Release库轻则行为异常重则直接崩溃。判断办法是看程序启动目录下或者PATH里到底指向哪个bin。把这几类问题汇总一下方便以后快速定位报错现场根因处理找不到Qt5Cored.lib附加库目录没指对/配置错了查工程属性确认路径到lib目录undefined reference to vtableQ_OBJECT未moc查Qt Project Settings标记头文件Rebuild缺少Qt5Cored.dllPATH没指向Qt的bin加PATH或调试环境设置中文乱码编码不一致/utf-8 UTF-8 with BOM6. 部署打包与长期维护建议6.1 用windeployqt做最小化部署程序写完要发给别人用不能指望对方也装Qt。Qt官方提供windeployqt工具来自动收集运行所需的Qt相关文件。用法cd /d 你exe所在目录 C:\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe --release --compiler-runtime 你的程序.exe执行完后exe旁边会出现一堆DLL和plugins目录比如platforms里的qwindows.dll这些就是最小可用集。--compiler-runtime参数会把MSVC的运行时DLL也带过来如果你目标机器上装了VC运行库分发版也可以不带这个参数让用户装一遍运行库。注意发布包用Release别拿Debug的exe去部署Debug产物会依赖带d的调试DLL体积大且目标机器通常没有调试运行环境。6.2 PATH与Qt版本的日常维护我的习惯是把Qt的bin目录固定在系统PATH里但只保留一个正在使用的版本。多版本并存时谁在PATH里在前运行时就可能串库。比如你PATH里同时有5.15.2和6.2的bin偶然一次顺序变化程序加载的DLL就变了这种问题非常难排查。升级Qt时流程是固定的先装新版本→在Qt VS Tools里注册新版本→逐个工程右键Qt Project Settings改版本→重新生成→跑一遍冒烟用例。不要直接卸载旧版本等新版本稳定运行一周再清理。6.3 我建议的配置清单最后给一份我实际使用的配置组合照抄可以少走弯路IDEVS2019安装时勾选使用C的桌面开发工作负载其中MSVC v142工具集必装。Qt5.15.2 msvc2019_64或Qt 6.x LTS的msvc2019_64如果该版本提供。扩展Qt Visual Studio Tools版本和VS2019匹配。路径D:\Qt作为根目录统一放不同版本的Qt避免C盘慢慢被撑爆。编码工程加/utf-8源文件UTF-8 with BOM。部署Release windeployqt --compiler-runtime压缩后一般几十MB。这份清单适合绝大多数Windows桌面工具型项目。如果你做的是带Qt WebEngine的重型客户端体积和组件选择会完全不同但原理和上面讲的完全一样版本匹配、路径干净、Debug/Release分清、部署的DLL收集完整。我在实际配置过程中最大的体会是Qt VS2019这个组合真正难的从来不是用而是配。配好之后日常写代码和写普通C几乎没有区别信号槽、UI设计器、资源系统都能正常工作而配的过程里只要版本匹配和路径这两件事不犯错至少能少遇到一半的报错。如果你正卡在某个具体报错上优先回到第4.2节的注册路径和第5.1节的附加库目录这两个位置检查大概率就是它们的问题。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/16 2:50:02
CodeBuddy IDE实测:AI Agent如何重塑开发工作流
2026/10/16 2:45:02
LAMMPS fix mol/swap 命令详解:分子内原子类型 Monte Carlo 互换的实现原理与实战
2026/10/16 2:45:02
车辆类型检测实战:YOLO数据集全流程构建与避坑指南
2026/10/16 7:00:26
C#对接MES系统全攻略:从接口摸底到代码落地与联调避坑
2026/10/16 7:00:26
WinCC报表控件深度解析:工业HMI数据导出与动态生成实战指南
2026/10/16 7:00:26
Codesys凸轮点在线修改实战:绕过MC_CamIn只读限制
2026/10/16 7:00:26
JDK 8u321 for Linux AArch64:国产ARM服务器Java生产环境稳定部署指南
2026/10/16 7:00:26
STM32F103模拟I2C访问PCA9555:GPIO时序与寄存器配置实战
2026/10/16 6:55:25
连锁酒店IPPBX互通配置实战:小蜜蜂多酒店系统详解
2026/10/16 0:04:49
HCIA-AI V3.5 模拟题库从零搭建:知识点标签、组卷算法与错题分析
2026/10/16 0:04:49
游戏项目Shader清理实战:静态扫描与动态验证双轨并行
2026/10/16 0:04:49
比特币白皮书深度拆解:从双重支付到共识机制的核心设计
2026/10/16 1:17:36
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/16 1:17:35
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/16 1:17:35
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/16 1:17:35
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)