第一章:Qt简介与环境搭建
各位同学好,我是老K。做Qt开发十几年了,今天咱们聊聊Qt的入门。
说实话,Qt这套框架,我当年刚接触时也觉得有点懵。但用顺手之后,你会发现它真的香。咱们这一章,就把Qt是什么、怎么装、怎么跑第一个程序,一次性讲清楚。
1.1 Qt的历史——从挪威小公司到跨平台霸主
Qt诞生于1991年,两个挪威人——Haavard Nord和Eirik Chambe-Eng搞出来的。当时他们想做个跨平台的图形界面库,结果一做就是三十多年。
我印象最深的是,Qt在1995年才发布第一个商业版本。那时候Windows如日中天,跨平台这个概念还没几个人当真。但Qt坚持下来了,而且越做越好。
2008年,诺基亚收购了Qt。嗯,那段时间Qt的发展有点慢。不过2012年,Qt被Digia接手,后来又成立了独立的Qt公司。现在Qt由Qt Company维护,活得挺滋润。
Qt的版本演进,我简单列个表:
| 版本 | 发布时间 | 主要特点 |
|---|---|---|
| Qt 1.0 | 1995年 | 第一个商业版本,支持X11和Windows |
| Qt 2.0 | 1999年 | 引入模板、国际化支持 |
| Qt 3.0 | 2001年 | 更完善的组件,开始支持Mac |
| Qt 4.0 | 2005年 | 重大重构,引入QGraphicsView等 |
| Qt 5.0 | 2012年 | 模块化,支持C++11,QML成熟 |
| Qt 6.0 | 2020年 | 全面现代化,性能大幅提升 |
我个人建议,新项目直接用Qt 6。除非你维护的是老项目,否则别纠结版本。
1.2 Qt的优势——为什么选它?
你可能会问:市面上那么多界面库,MFC、wxWidgets、GTK+,为什么偏偏选Qt?
我直接说几个硬核理由:
- 跨平台真·一次编写,到处编译:Windows、Linux、macOS、Android、iOS,甚至嵌入式系统,一套代码搞定。我在项目中遇到过,客户要求同时支持Windows和Linux,用Qt两周就搞定了。
- 信号与槽机制:这是Qt的灵魂。比回调函数优雅一万倍。对象之间通信,就像发短信一样简单。
- 丰富的组件库:按钮、表格、树、列表、对话框……你能想到的UI组件,Qt基本都有。而且样式可以随便改。
- QML + JavaScript:做现代炫酷界面,用QML写UI,C++写逻辑,分工明确。我最近几个项目都是这么干的。
- 开源且商业友好:开源版(GPL/LGPL)免费,商业版有技术支持。小公司用开源版完全够用。
- 强大的工具链:Qt Creator、Qt Designer、Qt Linguist……一套工具帮你从编码到发布全搞定。
一句话总结:Qt是C++界面开发的事实标准。如果你做桌面应用,Qt是首选。
1.3 Qt Creator安装与配置
好,理论说完了,咱们动手。安装Qt Creator其实很简单,但有几个坑我得提前告诉你。
1.3.1 下载安装包
去Qt官网(qt.io)下载在线安装器。注意,别下错了版本。我建议下载开源版,因为免费。
安装时,你会看到一堆组件选择。这里我给出我的推荐配置:
| 组件类别 | 推荐选择 | 说明 |
|---|---|---|
| Qt版本 | Qt 6.5.x 或更高 | 稳定版,别追最新 |
| 编译器 | MinGW(Windows)或GCC(Linux) | MSVC也行,但MinGW更省心 |
| Qt Creator | 最新版 | IDE本身,必选 |
| Qt Charts | 勾选 | 做图表用,常用 |
| Qt WebEngine | 按需勾选 | 嵌入浏览器,体积大 |
| Qt Multimedia | 勾选 | 音视频处理 |
避坑指南:我曾经在Windows上只装了MSVC编译器,结果项目换到Linux就编译不过。后来我学乖了,开发环境尽量和部署环境一致。如果你不确定,就选MinGW,兼容性最好。
1.3.2 配置Qt Creator
安装完成后,打开Qt Creator。第一次启动会提示配置编译器。一般来说,它会自动检测到已安装的Qt版本和编译器。
你可以在「工具」→「选项」→「Kits」里查看。确保有一个可用的Kit(比如「Desktop Qt 6.5.0 MinGW 64-bit」)。
我个人习惯把字体调大一点,在「选项」→「环境」→「字体」里设置。代码看着舒服,眼睛不累。
1.4 第一个Qt程序——Hello World
终于到写代码环节了。咱们用两种方式实现Hello World:纯代码和Qt Designer拖拽。
1.4.1 方式一:纯代码创建
打开Qt Creator,点击「新建项目」→「Application」→「Qt Widgets Application」。项目名就叫HelloWorld。
然后,把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():进入事件循环,程序开始运行。
点击运行(绿色三角),你会看到一个窗口,中间显示「Hello, Qt!」。嗯,就是这么简单。
小技巧:如果你觉得窗口标题不好看,可以加一行 label.setWindowTitle("我的第一个Qt程序"); 试试。
1.4.2 方式二:Qt Designer拖拽
纯代码虽然酷,但实际项目中,界面复杂了还是用设计器方便。
在项目中双击 mainwindow.ui 文件,Qt Designer就打开了。从左侧拖一个Label到窗口上,双击输入「Hello, Qt!」。然后调整一下字体大小。
保存后,在 mainwindow.cpp 里,你不需要写任何界面代码。Qt会自动生成UI文件对应的类。
我个人更喜欢这种方式,尤其是做原型的时候。拖拖拽拽,几分钟一个界面就出来了。
1.5 本章知识体系
为了让你更直观地理解本章内容,我画了一张图:
这张图把本章的知识点串起来了。你看,Qt历史是背景知识,优势是选型依据,环境搭建是准备工作,Hello World是实战入门。一环扣一环。
1.6 避坑总结
最后,我把自己踩过的坑总结一下,你注意避开:
- 安装时别偷懒:组件尽量选全,尤其是调试用的符号文件。不然编译报错时你都不知道错在哪。
- Kit配置要检查:我曾经在Windows上配了MSVC Kit,结果项目里用了MinGW特有的头文件,编译直接崩。后来我统一用MinGW,再没出过问题。
- 中文乱码问题:Qt 5之后默认UTF-8,基本不会乱码。但如果你用Qt 4或者老项目,记得在main.cpp里加
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); - 路径不要有中文和空格:项目路径、源码路径,都不要有中文和空格。否则某些编译器会报奇怪的错误。
好了,第一章就到这里。你跟着把环境搭好,跑通Hello World,就算入门了。后面咱们会一步步深入,把Qt玩透。