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 入门 Qt 发展史 1991年诞生 → Qt 4/5/6 诺基亚 → Digia → Qt Company 应用领域 桌面 | 嵌入式 | 移动 WPS / 汽车仪表 / Android 环境搭建 MinGW vs MSVC 新手推荐 MinGW 第一个程序:Hello World QApplication QLabel 控件 事件循环 跨平台编译

好了,第一章的内容就到这里。环境搭好了,第一个程序也跑通了,接下来就可以开始真正写Qt界面了。

可可精品资料库