一、Qt简介与环境搭建

各位同学好,我是这门课的主讲工程师。今天咱们聊聊Qt的来龙去脉,以及怎么把开发环境搭起来。说实话,我最早接触Qt是在2010年,那时候它还是个“小众玩具”。但十几年下来,Qt已经成了跨平台桌面开发的一把好手。

1.1 Qt的历史:从挪威小公司到全球标配

Qt的故事要从1991年说起。两个挪威人——Haavard Nord和Eirik Chambe-Eng,在奥斯陆创立了Trolltech公司。他们想做一套“写一次代码,到处编译”的图形界面库。嗯,这个想法在当时挺超前的。

1995年,Qt 0.9版本发布。那时候它只能在Unix上跑。后来慢慢支持了Windows、Mac。2008年,诺基亚收购了Trolltech,Qt开始进入移动领域。再后来,Digia接手,2014年成立了Qt Company。现在Qt由Qt Group维护,版本已经到6.x了。

我个人觉得,Qt能活下来,靠的是两样东西:跨平台开源。你想想看,一个库能同时在Windows、Linux、macOS、Android、iOS上跑,省了多少事。

关键版本节点:

  • Qt 1.0 (1995) —— 只支持Unix
  • Qt 2.0 (1999) —— 引入模板库
  • Qt 4.0 (2005) —— 架构大重构,性能飞跃
  • Qt 5.0 (2012) —— 模块化,支持移动端
  • Qt 6.0 (2020) —— 聚焦高性能和现代C++

1.2 跨平台原理:Qt是怎么做到的?

说白了,Qt的跨平台靠的是抽象层。它把不同操作系统的API包装成统一的接口。你在代码里调用QPushButton,Qt底层会自动判断当前是Windows还是Linux,然后调用对应的原生API去画按钮。

为什么会这样?因为Qt维护了一套“平台适配层”。每个平台都有对应的插件,比如Windows用QWindowsIntegration,Linux用QXcbIntegration。你写代码时根本不用管这些,Qt帮你搞定。

我在项目中遇到过一个问题:同样的代码在Windows上显示正常,在Linux上字体却偏小。后来发现是DPI缩放没处理好。Qt 5.6之后加了高DPI支持,但需要手动开启。嗯,这里要注意。

小技巧:跨平台开发时,尽量用Qt自带的类,别直接调用系统API。否则你的代码就“绑死”在某个平台上了。

1.3 Qt Creator安装与配置

Qt Creator是官方IDE,免费又好用。我建议你直接从qt.io下载在线安装器。别去搞什么绿色版、精简版,容易出问题。

安装步骤:

  1. 打开安装器,选择组件。至少勾选:Qt 6.x(最新稳定版)、Qt Creator IDE、MinGW或MSVC编译器。
  2. 如果你做Android开发,记得勾选Android工具链。
  3. 安装路径别带中文和空格。我曾经因为路径里有中文,编译死活报错,折腾了两小时。

配置要点:

  • 打开Qt Creator,进入“工具” -> “选项” -> “Kits”。
  • 确保编译器、调试器、Qt版本都自动检测到了。如果没检测到,手动添加路径。
  • 建议把“构建目录”设置为“与源码分离”,这样源码目录干净。

避坑指南:我曾经在Windows上装了多个Qt版本(5.12和6.2),结果项目配置混乱,编译时链接了错误的库。后来我统一用Qt 6.x,旧项目用容器隔离。你如果刚开始学,装一个最新稳定版就够了。

1.4 第一个Hello World程序

好了,咱们动手写第一个程序。打开Qt Creator,新建项目 -> “Application” -> “Qt Widgets Application”。项目名就叫HelloWorld。

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.show();

    return app.exec();
}

这段代码干了三件事:

  • 创建QApplication对象——每个Qt程序必须有且只有一个。
  • 创建QLabel,显示文字。
  • 调用show()显示窗口,app.exec()进入事件循环。

点击运行按钮(绿色三角),你会看到一个窗口弹出来,上面写着“Hello, Qt 世界!”。

我个人习惯把第一个程序写得简单点,让你感受一下Qt的“事件驱动”模型。你想想看,整个程序就靠app.exec()这个循环在跑,鼠标点击、键盘输入都通过事件传递。这就是Qt的核心机制。

提示:如果你在Linux上编译报错“找不到Qt头文件”,多半是没安装qt6-base-dev包。sudo apt install qt6-base-dev 搞定。

1.5 本章知识体系

下面这张图帮你梳理本章的核心逻辑:

Qt 简介与环境搭建 Qt 历史 1991年诞生于挪威 2008年被诺基亚收购 2014年Qt Group独立 跨平台原理 抽象层封装系统API 平台适配插件 统一接口调用 环境搭建 下载在线安装器 选择Qt 6.x + MinGW 配置Kits编译器 Hello World 程序 QApplication 事件循环 QLabel 显示文字 事件驱动模型 信号与槽机制 事件循环处理

这张图把本章内容串起来了。从历史背景到跨平台原理,再到实际搭建环境和第一个程序,最后落到Qt的核心——事件驱动模型。你学完这一章,应该能回答三个问题:Qt是什么?为什么能跨平台?怎么跑起来第一个程序?

好,第一章就到这里。记住,环境搭好了,后面才能玩得转。别急着写复杂代码,先把Qt Creator摸熟。


公众号:蓝海资料掘金营,微信deep3321