1、Qt概述与环境搭建:Qt简介、Qt发展史、Qt应用领域、Qt开发环境搭建(MinGW/MSVC)、第一个Qt程序
1.1 Qt到底是什么?
说实话,我入行那会儿,Qt给我的第一印象就是「一套能写界面的C++库」。但干久了才发现,这玩意儿远不止这么简单。
Qt是一个跨平台的C++应用程序开发框架。它由挪威的Trolltech公司(奇趣科技)在1991年开发出来。你想想看,一个框架能活30多年,肯定有两把刷子。
Qt的核心价值在于:一次编写,到处编译。你写一套代码,可以在Windows、Linux、macOS、Android、iOS上跑起来。我在项目中遇到过最爽的一次,是把一个Windows上的工业控制软件,花了三天就移植到了Linux嵌入式设备上——基本没改代码。
Qt的核心组成:
- Qt Core — 核心非GUI功能,事件循环、线程、容器等
- Qt GUI — 窗口系统、事件处理、2D图形
- Qt Widgets — 经典桌面控件,按钮、表格、树等
- Qt Quick/QML — 现代声明式UI,适合动效和触摸
- Qt Network — TCP/UDP、HTTP、WebSocket
- Qt SQL — 数据库访问
1.2 Qt发展史:从奇趣到诺基亚,再到Qt公司
这段历史挺有意思的。我简单捋一下:
| 年份 | 事件 |
|---|---|
| 1991 | Haavard Nord和Eirik Chambe-Eng开始开发Qt |
| 1995 | Qt 1.0发布,支持Unix/X11 |
| 2005 | Qt 4发布,架构大重构 |
| 2008 | 诺基亚收购Trolltech |
| 2012 | Digia收购Qt,Qt 5发布 |
| 2020 | Qt 6发布,面向未来 |
我个人习惯把Qt 4和Qt 5当作分水岭。Qt 4时代,写界面主要靠Widgets,代码量很大。到了Qt 5,QML出来了,做动效简直不要太爽。Qt 6则进一步统一了底层架构,性能提升明显。
我的建议:新手直接学Qt 6。但如果你要维护老项目,Qt 5的知识也得补上。我在2022年还接手过一个Qt 4.8的项目……嗯,那酸爽。
1.3 Qt的应用领域:比你想象的广
很多人以为Qt只能写桌面软件。其实不然。我列几个我亲眼见过的场景:
- 工业自动化 — 数控机床的HMI界面,我参与过的一个项目就是Qt做的
- 汽车仪表盘 — 很多车机系统用Qt,尤其是Qt for MCU
- 医疗设备 — CT机、超声诊断仪的界面
- 安防监控 — 视频录像机、门禁系统的客户端
- 消费电子 — 智能音箱、机顶盒的UI
- 跨平台工具 — Wireshark、VirtualBox、VLC这些知名软件都是Qt写的
为什么会这么广?因为Qt的抽象层做得很好。你写的是业务逻辑,底层是Windows还是Linux,Qt帮你搞定。
1.4 开发环境搭建:MinGW还是MSVC?
这是新手最容易纠结的问题。我直接说结论:
| 编译器 | 适用场景 | 我的推荐 |
|---|---|---|
| MinGW | 开源、轻量、跨平台编译 | 学习阶段首选 |
| MSVC | Windows原生、调试强、性能优 | 企业项目首选 |
我个人习惯是:学习用MinGW,做项目用MSVC。为什么?MinGW装起来简单,不用装Visual Studio那么大一个东西。但到了实际项目中,MSVC的调试器(尤其是内存泄漏检测)比MinGW强太多了。
避坑指南:我曾经在MinGW下编译了一个项目,一切正常。换到MSVC后,各种链接错误。原因是MinGW的gcc对某些C++标准支持得比较宽松,而MSVC更严格。所以,尽量用同一个编译器完成开发和部署。
安装步骤(以Qt 6.5为例)
- 去
qt.io/download下载Qt在线安装器 - 运行安装器,选择「Custom Installation」
- 勾选你需要的组件:
- Qt 6.5.x 下的 MinGW 或 MSVC 套件
- Qt Creator(IDE)
- Qt Charts、Qt Data Visualization(按需)
- 安装完成后,打开Qt Creator,配置编译器路径
小技巧:安装时别勾选所有组件,那会占用十几个G。只选你当前需要的。我一般只选一个编译器套件 + Qt Creator + 必要的模块。后面缺什么再补装。
1.5 第一个Qt程序:Hello Qt
理论说再多,不如跑一个程序实在。我们来写一个最简单的Qt Widgets程序。
// main.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, Qt!");
label.resize(300, 200);
label.show();
return app.exec();
}
这段代码干了什么?
QApplication— 每个Qt GUI程序必须有且只有一个QLabel— 显示文本的控件app.exec()— 进入事件循环,程序开始跑起来
在Qt Creator里,新建一个「Qt Widgets Application」项目,把上面的代码贴进去,点运行。你会看到一个窗口,中间写着「Hello, Qt!」。
注意:如果你用的是Qt 6,QLabel默认不支持HTML富文本了。想显示富文本,得用QTextBrowser。这是Qt 6的一个小变化,我当初也踩过这个坑。
1.6 本章知识体系
下面这张图,是我用SVG画的本章核心逻辑。你可以把它当作一个思维导图来看:
这张图把本章的四个核心知识点串起来了。你学完这一章,应该能回答三个问题:Qt是什么?怎么装?怎么跑第一个程序?
我的经验:环境搭建这一步,很多人会卡在编译器配置上。如果你用的是Windows,建议先装MinGW版本,跑通第一个程序再说。等你有信心了,再折腾MSVC。别一上来就搞复杂了。