Note

本篇是整个 QT 系列的起点。你将了解 Qt 是什么、它凭什么在众多 C++ GUI 方案中脱颖而出、Qt5 和 Qt6 该怎么选,并完成 Windows 下 Qt Creator + MinGW 编译器套件的完整安装。适合有 C++ 语言基础、但从未写过图形界面程序的读者。

Qt 是什么

Qt(读音近似 “cute”,而不是字母 Q、T 分开念)是一个用 C++ 编写的跨平台应用开发框架。它最广为人知的用途是图形界面开发,但它的能力远不止画窗口:容器、多线程、网络、数据库、串口、多媒体、Web 引擎,几乎覆盖桌面软件的全部常见需求。

一句话概括 Qt 的定位:用一套 C++ 代码,编译出运行在 Windows、Linux、macOS 乃至移动端和嵌入式设备上的原生程序。WPS Office、VirtualBox、VLC 等知名软件都用了 Qt。

为什么选 Qt

对比其他 C++ 界面方案(Win32/MFC、wxWidgets、原生 API),Qt 有几个难以替代的优势:

跨平台

同一份源码只需在不同平台上重新编译,不需要改动界面逻辑。Qt 把各操作系统的窗口、输入、绘图差异封装在框架内部,你面对的始终是统一的 C++ 类接口。

信号与槽

Qt 没有沿用 C++ 传统回调函数的做法,而是发明了”信号与槽”机制:对象状态变化时发出信号,关心这个变化的对象用槽函数接收并响应,两者通过 connect 关联。它比回调更安全(自动断开连接、支持多对多关联),也更符合”组件协作”的思维方式。这是 Qt 最核心的设计,后面会专篇展开。

元对象系统

Qt 在标准 C++ 之上构建了一套元对象系统:编译前由 moc(元对象编译器)扫描源码,为每个带 Q_OBJECT 宏的类生成额外的元信息代码,从而在运行时获得类名、属性、信号槽等反射能力。这些能力是标准 C++ 本身不具备的,也是 Qt 一切魔法的基础。

Qt5 还是 Qt6

Qt6 于 2020 年底发布,如今已是新项目的默认选择,但两者关系密切:

方面Qt5Qt6
现状维护期,大量存量项目在用活跃开发主线
C++ 标准C++11 起要求 C++17
架构单一渲染思路渲染层统一为 RHI,适配更多 GPU
教程兼容旧教程以 Qt4/5 为主核心语法与 Qt5 高度兼容

对初学者的建议:直接学 Qt6,遇到 Qt5 的教程也无妨。Qt6 保留了 Qt5 的绝大部分类名和用法,本书所有示例代码都会写成两者通用的形式。少数差异(如部分类挪到了新模块、QRegExpQRegularExpression 取代)遇到时再查文档即可。

主要模块一览

Qt 采用模块化设计,按需引入,避免程序臃肿。入门阶段最常打交道的是这几个:

  • QtCore:地基模块,提供容器(QList、QMap)、字符串 QString、文件、线程、事件循环等,任何 Qt 程序都离不开它。
  • QtWidgets:桌面图形界面模块,提供按钮、输入框、窗口、布局等传统控件。
  • QtQml / QtQuick:声明式 UI 模块,用 QML 语言描述界面,适合动效丰富的现代界面和移动端。
  • QtNetwork:TCP/UDP/HTTP 客户端与服务器的网络通信类集。
  • QtSerialPort:串口收发,工控、嵌入式上位机开发的常客。

Warning

新手常见错误:代码里用了某个模块的类,却忘记在工程文件里声明依赖。比如用了 QPushButton 但工程里没加 widgets 模块,链接阶段会报 undefined reference报这种错先检查模块声明,而不是怀疑类名写错。

开发环境搭建(Windows)

Windows 下的推荐组合是 Qt 在线安装器 + Qt Creator IDE + MinGW 编译器套件,全程免费开源。

安装步骤

  1. 下载安装器:访问 Qt 官网的 “Download” 页面,选择开源(Open Source)用途的 Qt Online Installer。
  2. 注册 Qt 账号:安装过程需要登录,免费注册即可。
  3. 选择组件:在组件选择页,展开最新的 Qt 6.x 版本节点,勾选:
    • MinGW 64-bit(Qt 库本体,编译运行必需);
    • Qt Creator(默认已勾选,这是 Qt 官方 IDE);
    • Developer and Designer Tools 里的 MinGW 工具链(gcc/g++ 编译器与调试器)。
  4. 等待下载安装完成(组件较大,视网速可能需要较长时间)。

Warning

两个高频坑:

  • 只装了 Qt 库,没装 MinGW 工具链:Qt Creator 打开时找不到编译器,构建套件(Kit)处显示黄色感叹号。回到安装器的 “Add or remove components” 补装即可。
  • 误以为必须用 MSVC:MSVC 需要单独安装 Visual Studio,体量大且授权复杂。初学阶段 MinGW 足够,且与 Linux 下的 gcc 行为一致,更利于以后跨平台。

验证安装

打开 Qt Creator,新建一个 “Qt Widgets Application” 项目, Kit 选择页面应能正确识别 MinGW 套件。直接点击左下角绿色运行按钮,若弹出一个空窗口,说明 Qt 库、编译器、IDE 三者已正确协作。

Success

Qt Creator 自带的帮助文档(左侧 “帮助” 模式,快捷键 F1)是最权威、最及时的学习资料。养成”遇到不熟悉的类,先按 F1 看文档”的习惯,比搜零散博客高效得多。类的文档结构固定:简介、继承关系、属性、公有方法、信号、槽,读几次就熟了。

本篇小结

Qt 是跨平台的 C++ 应用框架,信号槽与元对象系统是它的两大看家本领;新项目直接从 Qt6 学起,代码写法上与 Qt5 高度兼容;模块按需引入,忘了在工程文件声明模块是新手报错的第一大来源。环境搭好后,下一篇我们就动手写出第一个窗口程序。