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

  1. 去Qt官网下载在线安装器(qt-unified-windows-x64-online.exe)。
  2. 运行安装器,登录Qt账户(没有就注册一个,免费的)。
  3. 选择组件时,注意勾选:
    • Qt 6.5.x 下的 MinGW 或 MSVC 版本
    • Qt Creator(IDE,必选)
    • Sources(源码,建议勾上,调试时有用)
  4. 安装路径不要有中文和空格。我曾经因为路径里有中文,编译死活报错,折腾了半天才发现是路径问题。

避坑指南:我曾经在安装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概述与环境搭建 Qt简介 Qt发展史 应用领域 环境搭建与配置 MinGW MSVC Qt Creator Hello World示例 本章知识体系结构图

这张图把本章内容串起来了。你从中心节点出发,沿着分支往下看,就能理清Qt的来龙去脉。我个人习惯在学习新知识前先画这样的图,心里有个框架,学起来不迷路。

学习建议:别急着把环境搭建搞到完美。先装一个能用的版本,跑通Hello World,找到感觉再说。配置细节可以边用边调,效率更高。

好了,Qt的大门已经为你打开。接下来就是动手实践的时候了。记住,看十遍不如写一遍。

可可精品资料库