一、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下载在线安装器。别去搞什么绿色版、精简版,容易出问题。
安装步骤:
- 打开安装器,选择组件。至少勾选:Qt 6.x(最新稳定版)、Qt Creator IDE、MinGW或MSVC编译器。
- 如果你做Android开发,记得勾选Android工具链。
- 安装路径别带中文和空格。我曾经因为路径里有中文,编译死活报错,折腾了两小时。
配置要点:
- 打开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是什么?为什么能跨平台?怎么跑起来第一个程序?
好,第一章就到这里。记住,环境搭好了,后面才能玩得转。别急着写复杂代码,先把Qt Creator摸熟。
公众号:蓝海资料掘金营,微信deep3321