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为例)

  1. 去 qt.io/download 下载Qt在线安装器
  2. 运行安装器,选择「Custom Installation」
  3. 勾选你需要的组件:
    • Qt 6.5.x 下的 MinGW 或 MSVC 套件
    • Qt Creator(IDE)
    • Qt Charts、Qt Data Visualization(按需)
  4. 安装完成后,打开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系统编程核心技巧 第1章:Qt概述与环境搭建 Qt简介 跨平台C++框架 一次编写到处编译 发展史 1991→Qt 4→Qt 5→Qt 6 诺基亚→Digia→Qt公司 应用领域 工业/汽车/医疗 安防/消费电子 环境搭建 MinGW vs MSVC Qt Creator配置 第一个Qt程序:Hello Qt QApplication + QLabel + app.exec()

这张图把本章的四个核心知识点串起来了。你学完这一章,应该能回答三个问题:Qt是什么?怎么装?怎么跑第一个程序?

我的经验:环境搭建这一步,很多人会卡在编译器配置上。如果你用的是Windows,建议先装MinGW版本,跑通第一个程序再说。等你有信心了,再折腾MSVC。别一上来就搞复杂了。

可可精品资料库