☰
Qt 6开发环境搭建全攻略:从编译器选型到跑通第一个窗口程序
2026/10/18 15:47:20 网站建设 项目流程

1. 为什么还在聊Qt环境搭建

先说个现象:很多从零开始学Qt的开发者,包括我当年一起入坑的同事,第一关往往不是语法,不是信号槽,而是“环境装不上”。Qt本身不算复杂,但它的开发环境涉及编译器、调试器、构建工具、套件配置好几个环节,任何一个对不上,都会在第一个“Hello World”上卡住半天。更麻烦的是,网上教程大多默认你已经装好了某个编译器,或者默认你用的是某个特定版本,换个环境就全对不上。

我这篇就只干一件事——把Qt开发环境从下载到跑通第一个窗口程序,整个链条走一遍。我用的是Windows平台加Qt 6的开源版,这也是目前个人学习和大多数中小型桌面项目最常用的一套组合。文章会把选型逻辑、每一步操作背后的原因、容易踩的坑都讲清楚,保证你跟着走完,能真正双击运行出一个带按钮的窗口,而不是只对着安装界面发呆。

这篇适合三类人看:完全没接触过Qt的新手,换电脑后要重新配环境的熟手,以及想从“能跑”进阶到“知道为什么这么配”的开发者。

2. 动手装之前,先想明白三件事

2.1 开源版还是商业版,其实不用纠结

Qt的授权方式分成开源版和商业版。开源版用LGPL或GPL协议,商业版就是购买授权。对绝大多数学习者、个人项目、甚至公司内部工具来说,开源版足够用,直接从官方维护工具下载就行。唯一要注意的是:如果项目要闭源商用,并且你用了Qt的某些模块,就得去核实LGPL的合规要求,比如动态链接、允许替换、提供相应许可证文本等。不过这是后话,环境搭建阶段不用管。

2.2 编译器选MinGW还是MSVC,这是第一个关键岔路

在Windows上装Qt,官方安装器会问你要装哪个编译器套件。常见选项是MinGW和MSVC,很多新手在这里懵了。我直接说结论:如果你只是学习Qt,选MinGW;如果你要用Visual Studio写C++或者依赖Windows SDK做系统级开发,选MSVC。MinGW是GCC在Windows上的移植版本,Qt官方会为每个版本提供一个配套的MinGW编译器,打包下载,配置简单,不容易出乱子。MSVC则需要你机器上已经装了对应版本的Visual Studio Build Tools,Qt只管给你链接库,编译工作靠VS工具链完成,链路更长,版本必须严格匹配,配起来相对麻烦。

我自己第一台机器装的是MSVC版本,结果编译时提示找不到“cl.exe”,查了半天才发现是Visual Studio没装C++桌面开发组件。后来重装成MinGW版本,十分钟就跑通了。所以对于纯Qt新手,我的建议非常明确:第一步用MinGW,把Qt本身弄明白,之后再按需引入MSVC,没必要一开始就两个都碰。

2.3 版本选择:新不是万能,但也不是越老越稳

Qt 5和Qt 6是两个主要大版本。Qt 5目前仍在维护,最新的小版本号是5.15系列;Qt 6从6.0一路迭代到现在,功能迭代很快,桌面端、移动端、嵌入式都很活跃。如果没有任何历史包袱,我建议直接用Qt 6的最新稳定小版本。官方安装器在组件列表里会标明每个大版本的维护状态,挑“支持中”的即可。还有一个常见问题:同一个大版本里的小版本,比如6.5和6.8,有什么区别?对初学者来说差别不大,选择最新稳定版就好,因为新版会修掉很多编译器和平台的兼容性问题,少踩坑。

3. 官网下载与安装,别被界面劝退

3.1 下载安装器时的两个细节

访问Qt官方页面,找到“Download Qt”入口。注意现在官方网站更倾向于让你填邮箱获取在线安装器链接,页面会让你选平台——Windows、Linux、macOS各自不同。填完邮箱后,下载页面会给一个安装包,Windows下就是qt-online-installer-windows-x64-数字版本.exe。这个下载包本身不大,大概几十MB,后续真正的Qt库文件都是在安装过程中按需下载的,所以网络环境会直接影响安装时长,建议选网络状况好的时间段操作。

还有一个小细节:下载页有时会同时出现开源版和商业版两个入口,位置不同。选“Qt Online Installer for OpenSource”这个入口,别点到商业版试用入口,虽然安装步骤差不多,但授权提示完全两码事,容易搞混。

3.2 安装过程的真实界面和操作顺序

双击下载好的安装器,如果弹出来的是命令行窗口,那是它在初始化,不要关,等图形界面出来。图形界面会先要求登录或注册Qt账号——这个账号是官方强制要求的,用来做开源版用户识别,不用付费,但必须注册。登录之后就是一堆勾选项:

  • 安装路径:默认是C盘根目录下的某个文件夹,例如C:\Qt。我建议不要改到带中文或空格的路径,后面CMake、编译器对路径可能出问题。如果你有两个盘,可以选一个纯英文路径,比如D:\Qt。
  • 组件选择:这里是最关键的步骤。展开某个Qt版本,比如6.8.x,下面会列出一堆模块。务必勾选“MinGW 13.1.0”之类的编译器工具链(它和Qt版本是配套的),以及“Qt Creator”IDE、Qt的“Sources”、“Qt Debug Symbols”等调试符号。其余像“Qt Additional Libraries”“Qt 附加模块”中,勾选你真正需要的即可。

我当时第一次装时,图省事把每个模块全勾了,结果80GB磁盘空间被吃掉一半,而且安装时间超过一个小时。后来清掉重装,只保留了WinGW编译器、Qt Creator、编译器对应的二进制模块和Sources,总共不到8GB,半小时结束。所以组件选择的原则就是:需要哪个模块勾哪个,普通Widgets应用不用把庞大的WebEngine、多媒体模块全装上。

继续点击下一步,会进入许可协议确认界面。仔细看LGPL条款,确认要遵守Qt的开源许可条件,然后勾选接受,就可以安装了。安装过程会开启好几个下载线程,界面有进度条展示各个组件的状态。如果中途网络断开,别慌,安装器有断点续传机制,重新打开安装器一般会提示继续或终止。

3.3 安装完的两个收尾动作:别删“MaintenanceTool”,也顺手建个快捷方式

安装目录下会多出一个MaintenanceTool.exe文件——这是Qt官方维护工具,负责后续添加组件、更新版本、卸载Qt。很多新手装完就把它忘了,等想加一个模块时却找不到入口,只能重装整个Qt,白白浪费大量时间。

所以务必在当前目录给Qt Creator.exe和这个MaintenanceTool.exe都建个快捷方式,放到桌面或者你顺手的位置。后续无论是升级小版本,还是增装某个附加模块,都不用再重新下载安装器了。

4. Qt Creator 与套件配置,装好之后的真正重头戏

4.1 打开Qt Creator,先搞懂“套件”是什么

双击Qt Creator后,默认打开的欢迎界面会引导你新建项目。如果你已经新建过项目,重启Qt Creator后,在“工具”菜单里找到“选项”里的“Kits”页面。这里就是套件配置。所谓“套件”Kits,就是把一套自洽的开发工具链绑定在一起,包含:Qt版本、编译器、调试器、CMake(或qmake)这几样。你可以配置多个套件,比如一个MinGW套件、一个MSVC套件,然后在构建项目的时候选择用哪一套。这样改了套件,Qt Creator会自动调用对应的编译器和Qt库,无需手动改环境变量,非常实用。

我的理解是:套件像一台组装好的迷你电脑,CPU是编译器,内存是Qt库,操作系统是CMake,硬盘是调试器。你换套件,就等于换整台电脑,Qt Creator里的项目会默认使用你指定的那台“电脑”来编译运行。

4.2 关键字段怎么填:编译器、调试器、CMake

点选某个套件后,右侧有“编译器”“调试器”“Qt版本”“CMake工具”这几栏。正常情况下安装器会自动识别,并填入默认值。但偶尔也会出现某栏是黄色感叹号“!”的情况,这时就需要手动指定。

以MinGW套件举例,正常情况下:

  • 编译器C、C++都会自动指向MinGW安装目录的bin文件夹里的gcc.exe与g++.exe。检查一下路径是否真实存在即可。
  • 调试器建议使用GDB。MinGW安装包中通常自带gdb.exe,路径一般在MinGW/bin/gdb.exe。如果找不到,可以从系统工具中下载,或手动设置路径。
  • CMake:Qt 6时代,CMake是主要构建工具,Qt安装包中通常自带CMake组件,直接选定那个路径。

如果字段里已经是可用的路径,没有红色提示,就不用动。如果出现感叹号,点旁边的“浏览”按钮,手动定位到上面对应的exe文件。配置完毕后,Qt Creator会在套件名称前显示一个绿色勾号,表示这套工具链可用。

这里要特别提一个易错点:MSVC套件。如果你安装了Visual Studio,Qt Creator会自动识别MSVC编译器。但如果你在Visual Studio里只安装了Python开发或.NET负载,没有装“使用C++的桌面开发”,MSVC编译器是不会出现的。所以选MSVC套件的同学,务必回到Visual Studio Installer里补充安装C++桌面开发组件,否则在配套件时看不到任何MSVC编译器。

4.3 用“构建套件页面”做个自检

Qt Creator的“构建和运行”进入的Kits页面,有一个“Summary”栏,会列出当前套件的状态。最好的自检方法是:随便新建一个桌面Widgets项目,在“构建套件选择”下拉列表里选中你的套件,然后构建。如果编译日志里成功生成exe,说明套件完全可用。千万别只看绿色勾号就认为万事大吉——我见过不少套件状态正常,但构建时关键组件版本不匹配的案例,所以实测一次是性价比最高的校验方式。

5. 第一个程序跑起来:新建、构建、运行三步走

5.1 新建项目时怎么选模板

回到Qt Creator,点击欢迎界面的“New Project”。弹出的界面里有多种模板,例如“Application”、“Library”、“Other Project”。初学者选择“Application”下的“Qt Widgets Application”。这是什么意思呢?Widgets是Qt里传统的桌面控件库,基于QWidget提供窗口、按钮、文本框等基础UI控件,也是很多传统桌面软件的基石。虽然现在Qt也支持QML相结合的“Qt Quick”界面开发,但Widgets的代码结构更直观、更贴近传统C++桌面开发,初学者一上来接触这个概念最合适。Qt Quick那一套UI描述语言和渲染引擎可以之后再去学,不要一上来就被两种技术路线搞晕。

接下来会让你填项目名称、路径。项目名称我建议都用英文,路径也要全英文。虽然中文路径在新版Qt里报错率没那么高了,但为了不给自己添堵,还是养成用英文的习惯。继续点下一步,会问“构建套件”用哪个,选刚才配好的那个。再点下一步,是类信息设置,默认是MainWindow作为主窗口类,继承自QMainWindow,可以不改。最后一步是翻译文件、版本控制等,可以不勾选,直接完成。

生成后的项目结构中有几个关键文件:CMakeLists.txt(如果是CMake构建方式)控制整个项目的构建过程;main.cpp为入口文件,创建了MainWindow对象;mainwindow.cpp与mainwindow.h定义了主窗口类的实现。可以简单浏览一遍,从main.cpp入口去看,理解QApplication的作用——它是Qt程序的运行环境初始化对象,在它之后创建的控件才能正常运行;接着创建MainWindow窗口对象,调用show()显示,最后调用exec()进入事件循环。事件循环是个既高级又基础的概念,现在只需要知道它是Qt程序能一直运行而不闪退的原因就行。

5.2 加一个按钮、改一个标题,验证“环境真的通了”

默认生成的空窗口其实啥也没有,我们可以先加一个最精简的按钮,验证构建链条确实没问题。方法是双击mainwindow.h文件,在类声明里加一行私有成员:

private: QPushButton *btn;

然后在mainwindow.cpp的构造函数中加入:

btn = new QPushButton("点我", this); btn->setGeometry(100, 100, 80, 30);

注意还要在mainwindow.cpp的顶部引入头文件#include <QPushButton>。保存所有文件,点击左下角的绿色锤子按钮或直接按Ctrl+B构建。编译日志区域会输出类似”Build succeeded”的字样,同时Debug文件夹下会生成一个带项目名的exe。此时点击绿色播放按钮控制构建并运行,窗口就会弹出,标题为默认的“MainWindow”。如果想改窗口标题,在构造函数里加上:

setWindowTitle("我的第一个Qt窗口");

再次构建运行,看到带按钮的窗口出现,你的环境就算彻底搭好了。

这里有几个经验补充:

  • 运行时如果闪退,可以在Qt Creator的下方“应用程序输出”栏查看提示,大部分问题是代码异常,比如空指针或控件未初始化。初学者最常犯的错误是在创建控件后忘了指定父对象,导致窗口关闭后控件还留在内存里,弹出时不明显但关闭时崩溃。
  • Debug和Release两种构建模式区别很大。Debug模式下程序运行较慢,但带有调试信息,便于定位问题;Release模式编译出的程序运行更快、体积更小,但调试信息少。Qt Creator默认是Debug模式,初学者学习阶段用Debug即可,甚至可以两者并存——构建时切换配置,选择Debug或者Release即可。
  • 关于“构建目录”,Qt Creator默认会在项目文件夹下创建一个build-xxx-套件名称-配置名称的子目录。这个目录是编译生成的中间文件夹,不是源码目录。如果你后续想用Git管理源码,一定要在.gitignore里忽略掉这些build目录,否则每次构建出来的临时文件都会污染仓库。

5.3 直接双击exe运行,结果提示缺少DLL?

好不容易编译出一个exe,你双击它,结果弹出提示“由于找不到Qt6Widgets.dll,无法继续执行代码”。这个是新手必遇的经典坑。原因很简单:Qt程序运行时依赖Qt库的DLL,而这些DLL存放在Qt安装目录的bin文件夹下。在Qt Creator里运行时,Creator会自动把Qt库所在目录加入到程序的DLL搜索路径,所以一切正常;但直接双击exe时,系统找不到这些DLL。

解决办法也很直白:把Qt安装目录的bin文件夹路径添加到系统PATH环境变量,或者把需要的DLL复制到exe同目录下。第一种更通用,但会污染全局环境变量,不太推荐长期使用;第二种更干净——构建完程序发布时,最后要做的事就是把相关DLL都放一起。去Qt安装目录找到bin文件夹,把里面的全部或至少以Qt字符串开头的核心DLL都复制到exe旁。这种复制法是整个Qt学习过程中很有用的一个技能,也是后续打包分发时绕不开的操作,现在提前认识它也好。

6. Qt Creator日常使用里最常用的几个面板

环境搭好后,Qt Creator的界面值得花十分钟熟悉一下,因为后面所有开发都在这里进行。

最左侧的竖条是菜单栏模式切换,对应编辑、设计、调试、项目、帮助、发布等视图。常用的是“编辑(Edit)”和“项目(Projects)”两个视图。编辑视图用来写代码,也支持打开多个文件;项目视图里显示CMakeLists.txt、源文件等结构,方便浏览整个工程。

中下方是“信息输出”面板,有“构建输出(Build Output)”“应用程序输出(Application Output)”“问题(Issues)”“搜索结果”等标签页。其中“问题”标签很实用,它会把编译时的错误和警告汇总并显示相应的行号,点击一下就能跳到源码对应位置。很多人编译失败后找不到问题,就是因为光盯着构建输出二进制的眉头,不去看问题面板。

右上角还有一个“构建/运行按钮”组合,包含绿色箭头(运行)和锤子(构建)。旁边是调试模式按钮,点击后进入断点调试。新手一开始用断点定位代码逻辑是很好的习惯,比纯看日志高效得多。设置断点的方法是点击代码行号左侧的灰色边栏,出现红色圆点后再运行时就可在该位置暂停。

7. 常见问题速查与避坑经验

症状原因解决方案
编译时提示找不到g++或gcc编译器的路径没配对,或MinGW未安装在“选项->Kits”中重新指定编译器路径,路径一般位于Qt安装目录/Tools/mingw*/bin
提示Cannot find file: CMakeLists.txt项目目录位置被移动或构建目录错乱确认项目根目录下有CMakeLists.txt文件;清理一下build目录,重新打开项目
编译成功但运行时报缺少DLLQt运行库路径没加到环境变量在PATH添加Qt安装目录的bin路径,或手动把DLL复制到exe同目录
调试器启动失败,提示No such file套件里调试器没选对或GDB未安装在“套件”里将调试器指向实际的gdb.exe;MinGW套件自带gdb,找不到就重新安装MinGW
套件名称旁边有黄色感叹号该套件缺少某一部分工具链点击套件字段,逐项补全,尤其检查编译器、调试器、CMake三栏是否均有效
界面中文乱码源文件编码不统一或代码中直接使用中文字符串统一以UTF-8编码保存源文件;高级一点的方案是用Qt的语言家机制做多语言
修改代码后运行效果和改前一样可能构建的是Release而改的是Debug,或构建目录搞混在Qt Creator下方选择正确的构建配置和套件,然后重新构建运行

这些情况里,最费时间的往往不是技术难度,而是方向不对。比如调试器时好时坏,就是因为Qt Creator自身更新后,某些插件的GDB适配状态变了,重置一下套件配置往往就好了。再强调一次,Kits面板里全部显示正常、构建测试通过,这套环境才真正属于你。

8. 玩法进阶:环境搭好之后,下一步该怎么走

环境跑通第一个按钮只是起点。如果你按照上面的步骤走完,接下来可以试着加更多控件,比如文本框、列表、菜单,感受Qt的信号槽机制。信号槽是Qt最核心也最迷人的概念,简单说就是某个控件的操作(比如点击按钮)会发出信号,另一个对象在槽函数中响应。我建议从按钮的clicked信号开始,连接到一个自己写的槽函数,你会发现C++也能写得像脚本一样富有弹性。

如果你对界面风格感兴趣,可以去了解样式表QSS——可以把它理解成网页里的CSS,通过写简单的样式代码就能改变按钮、窗口、列表的颜色与外观。再往后可以做一个小工具,比如一个简单的记事本、文件重命名器等。

如果想探索模块,Qt 6还提供网络、多媒体、数据库等丰富的模块。比如你想做一个带界面的小工具,调用Qt网络的接口去请求本地服务;或者做一个资源管理器来操作本地文件,这些场景在Qt官方示例里都有现成代码,复制下来改改就能跑。最好的学习方式就是带着一个小工具的需求去写,而不是啃厚厚的手册。

我在实际操练中有个体会:环境搭建时遇到的那些坑,其实都是在间接锻炼你对工具链的理解,而非无意义的浪费时间。记得当时配好环境后,我开心得连续写了好几个小程序,从时钟、计算器一直做到一个带SQLite数据库的记账本——那会儿才真正体会到了“环境顺了,写代码就有了手感”。所以这步被你顺利走完,之后的Qt之路就正式开启了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询