1、Qt简介与环境搭建
大家好,我是你们的老朋友。今天咱们正式开启Qt开发之旅。
说实话,Qt这门技术,我用了快十年了。从最早的Qt 4.8,到现在的Qt 6,一路跟过来,踩过的坑不少,积累的经验也挺多。这一章,咱们先把基础打牢——了解Qt是什么,能做什么,再把开发环境搭起来,最后跑通第一个程序。
1.1 Qt发展史:一个跨平台的故事
Qt的故事,得从1991年说起。当时两位挪威工程师——Haavard Nord和Eirik Chambe-Eng,在开发一个跨平台的C++图形界面框架。说白了,他们想让同一套代码,能在Windows、Linux、Mac上都能跑起来。
1995年,Qt 1.0正式发布。我记得那时候,跨平台GUI框架还是个稀罕物。Qt的出现,确实解决了很多人的痛点。
后来Qt几经易主——先是被诺基亚收购,再后来卖给了Digia,现在由Qt Company独立运营。版本也从Qt 4、Qt 5,一路升级到Qt 6。
我个人觉得,Qt 5是一个分水岭。从Qt 5开始,Qt全面拥抱了C++11,性能提升了一大截。而Qt 6,则进一步优化了图形渲染管线,对高DPI屏幕的支持也更好了。
核心版本里程碑:
- Qt 1.0 (1995) — 诞生,支持X11和Windows
- Qt 4.0 (2005) — 引入QGraphicsView框架,性能飞跃
- Qt 5.0 (2012) — 全面C++11化,模块化架构
- Qt 6.0 (2020) — 统一QML与Widgets,优化渲染
1.2 Qt应用领域:桌面、嵌入式、移动
Qt能做什么?这个问题我经常被问到。其实Qt的应用场景非常广,我把它分成三大块:
桌面应用
这是Qt最传统的领域。WPS Office、VirtualBox、Autodesk Maya,这些大家耳熟能详的软件,底层都是Qt写的。我自己做过一个工业控制软件,界面用Qt Widgets,跑在Windows上,稳定运行了三年没出过问题。
嵌入式开发
嗯,这里要注意。Qt在嵌入式领域其实比桌面更活跃。汽车仪表盘、医疗设备、智能家居控制面板,很多都用Qt。为什么?因为Qt对硬件资源的占用控制得很好,而且支持触摸屏、旋转、缩放这些交互。
我曾经在一个ARM Cortex-A7的板子上跑Qt应用,内存才256MB,照样流畅运行。你想想看,如果换成Electron,同样的硬件根本带不动。
移动端
Qt支持Android和iOS。不过说实话,移动端不是Qt的主战场。原生开发(Java/Kotlin、Swift)在移动端的体验更好。但如果你需要一套代码同时覆盖桌面和移动,Qt是个不错的选择。
我的建议:如果你是初学者,先从桌面应用入手。桌面环境调试方便,资源也多。等熟悉了再往嵌入式或移动端扩展。
1.3 Qt开发环境搭建:MinGW vs MSVC
搭建环境,是新手最容易卡住的地方。我见过太多人卡在这一步,然后放弃了。其实没那么复杂,咱们一步步来。
下载Qt安装包
去Qt官网(qt.io)下载在线安装器。注意,Qt现在需要注册账号才能下载,免费的。安装时选择组件,我建议新手这样选:
- Qt 5.15.2 或 Qt 6.5.x(长期支持版,稳定)
- 编译器:MinGW 或 MSVC(二选一,下面细说)
- Qt Creator(IDE,必选)
- Qt Charts、Qt Data Visualization(可选,后面会用到)
MinGW vs MSVC:到底选哪个?
这是新手最纠结的问题。我直接给结论:
| 对比项 | MinGW | MSVC |
|---|---|---|
| 编译器 | GCC(开源) | Visual C++(微软) |
| 调试器 | GDB | CDB(需安装Windows SDK) |
| 性能 | 略低 | 略高 |
| 兼容性 | 跨平台好 | Windows专用 |
| 新手友好度 | ★★★★★ | ★★★☆☆ |
我的建议:新手直接选MinGW。为什么?因为MinGW安装简单,不需要额外装Visual Studio。而且MinGW的GDB调试器对新手更友好,报错信息更直观。
我曾经带过一个学生,他选了MSVC,结果折腾了一下午才配好调试环境。而另一个选MinGW的同学,十分钟就搞定了。嗯,你懂的。
避坑指南:我曾经在Qt 5.12上同时装了MinGW和MSVC两个版本,结果编译时经常搞混。后来我学乖了——一个Qt版本只配一个编译器。如果你需要两个编译器,就装两个Qt版本,比如Qt 5.15.2配MinGW,Qt 6.5.0配MSVC。
1.4 第一个Qt程序:Hello World
环境搭好了,咱们来写第一个程序。别紧张,就几行代码。
创建项目
打开Qt Creator,点击「New Project」→「Application」→「Qt Widgets Application」。项目名称填「HelloWorld」,选择MinGW编译器,一路默认下一步。
编写代码
Qt Creator会自动生成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.setAlignment(Qt::AlignCenter);
label.show();
return app.exec();
}
解释一下:
QApplication— 每个Qt程序都需要一个,管理事件循环QLabel— 显示文本的控件resize()— 设置窗口大小setAlignment()— 文字居中show()— 显示窗口app.exec()— 进入事件循环,等待用户操作
运行
点击左下角的绿色三角(或按Ctrl+R)。如果一切顺利,你会看到一个窗口,中间显示「Hello, Qt!」。
常见问题:如果编译报错「找不到QApplication」,说明你的.pro文件里没有加上QT += widgets。手动加上,重新qmake即可。
我第一次写Qt程序时,看到那个窗口弹出来,心里还挺激动的。虽然只是一个简单的标签,但跨平台GUI的大门,就这么打开了。
本章知识体系
下面这张图,帮你梳理本章的核心内容:
好了,第一章的内容就到这里。环境搭好了,第一个程序也跑通了,接下来就可以开始真正写Qt界面了。