1、Qt概述与环境搭建:Qt简介、Qt发展史、Qt应用领域、Qt开发环境(MinGW/MSVC)搭建与配置
1.1 什么是Qt?我为什么选择它?
Qt,说白了就是一个跨平台的C++图形用户界面框架。你想想看,写一套代码,能在Windows、Linux、macOS上跑起来,甚至还能部署到嵌入式设备和手机上——这就是Qt最核心的价值。
我个人习惯把Qt比作「瑞士军刀」。它不只是画界面那么简单,还包含了网络通信、数据库操作、多线程、XML解析、OpenGL渲染等等模块。我刚开始接触Qt时,觉得它就是个「画按钮的工具」,后来才发现自己太天真了。有一次项目中需要快速实现一个串口调试工具,Qt的QSerialPort模块直接帮我省了三天的开发时间。
核心要点:Qt = 跨平台GUI框架 + 丰富的功能模块 + 成熟的生态。它不是最轻量的,但绝对是最全面的之一。
1.2 Qt发展史:从桌面到全平台
Qt的历史,其实挺有意思的。1991年,两位挪威人Haavard Nord和Eirik Chambe-Eng开始开发这个框架。为什么叫Qt?有一种说法是字母Q在Emacs编辑器中看起来很漂亮,而t代表toolkit(工具包)。嗯,这里要注意,这只是坊间传闻,官方并没有明确解释。
我整理了几个关键节点:
| 年份 | 事件 | 我的评价 |
|---|---|---|
| 1995 | Qt 1.0发布 | 商业版,当时还没开源 |
| 2008 | 诺基亚收购Qt | Qt开始支持移动端,但诺基亚后来...你懂的 |
| 2012 | Digia接手Qt | Qt进入平稳发展期 |
| 2014 | Qt 5.0发布 | 全面支持C++11,QML开始发力 |
| 2020至今 | Qt 6.x时代 | 性能优化,模块精简,更现代 |
我记得Qt 5刚出来时,很多老项目还在用Qt 4。迁移过程确实痛苦,但Qt 5的QML和信号槽机制让我眼前一亮。说白了,技术选型不能只看眼前,得想想未来三五年。
1.3 Qt能做什么?应用领域一览
你可能觉得Qt就是做桌面软件的。没错,但远不止于此。我在项目中遇到过这些场景:
- 桌面应用开发:WPS Office、VirtualBox、Autodesk Maya,这些大牌软件都是Qt做的。你想想看,能撑起这些产品的框架,稳定性不会差。
- 嵌入式系统:汽车仪表盘、医疗设备、工业控制面板。Qt for MCU甚至能在微控制器上跑。
- 移动端开发:虽然现在iOS/Android原生开发更流行,但Qt在跨平台工具类App中仍有优势。
- 工业自动化:我参与过一个数控机床的项目,上位机界面就是用Qt做的。实时性要求高?Qt的QThread和信号槽机制完全扛得住。
我的建议:如果你刚入门,别急着学所有模块。先聚焦在QWidget和QML上,把界面和交互搞明白。其他模块用到再学,效率更高。
1.4 开发环境搭建:MinGW还是MSVC?
这是新手最容易纠结的问题。我直接说结论:
- MinGW:开源编译器,跨平台友好。适合初学者,也适合Linux转Windows开发的场景。
- MSVC:微软的编译器,Windows上性能更好。如果你要调用Windows API或使用Visual Studio,选它没错。
我个人习惯在Windows上用MSVC,在Linux上用GCC。为什么?因为MSVC对Windows原生支持更好,调试起来也顺手。但如果你只是学习Qt,MinGW完全够用,别在这上面浪费时间。
1.4.1 安装步骤(以Qt 6.5为例)
- 去Qt官网下载在线安装器(qt-unified-windows-x64-online.exe)。
- 运行安装器,登录Qt账户(没有就注册一个,免费的)。
- 选择组件时,注意勾选:
- Qt 6.5.x 下的 MinGW 或 MSVC 版本
- Qt Creator(IDE,必选)
- Sources(源码,建议勾上,调试时有用)
- 安装路径不要有中文和空格。我曾经因为路径里有中文,编译死活报错,折腾了半天才发现是路径问题。
避坑指南:我曾经在安装Qt时勾选了所有组件,结果硬盘直接爆了。Qt的文档和示例代码占空间很大,按需选择就好。另外,安装过程中如果网络不稳定,建议用离线安装包。
1.4.2 配置Qt Creator
安装完成后,打开Qt Creator,配置编译器:
- 点击「工具」→「选项」→「Kits」
- 确保编译器(Compiler)和调试器(Debugger)已自动检测到
- 如果没检测到,手动添加MinGW或MSVC的路径
嗯,这里要注意:Qt Creator默认会检测系统环境变量。如果你安装了多个版本的Qt,记得在Kits里选择正确的那个。
1.5 第一个Qt程序:Hello World
光说不练假把式。我们来写一个最简单的Qt程序:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, Qt!");
label.show();
return app.exec();
}
这段代码做了什么?
QApplication:管理应用程序的控制流和主要设置。QLabel:显示文本的控件。app.exec():进入事件循环,等待用户操作。
说白了,Qt程序就是「创建对象 → 显示 → 进入事件循环」这三步。你想想看,是不是很简单?
1.6 本章知识体系
为了让你更直观地理解本章内容,我画了一张结构图:
这张图把本章内容串起来了。你从中心节点出发,沿着分支往下看,就能理清Qt的来龙去脉。我个人习惯在学习新知识前先画这样的图,心里有个框架,学起来不迷路。
学习建议:别急着把环境搭建搞到完美。先装一个能用的版本,跑通Hello World,找到感觉再说。配置细节可以边用边调,效率更高。
好了,Qt的大门已经为你打开。接下来就是动手实践的时候了。记住,看十遍不如写一遍。
可可精品资料库