第一章: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入门知识体系 Qt历史与版本 1991年诞生 Qt 4/5/6演进 Qt核心优势 跨平台 信号与槽 丰富组件 QML支持 环境搭建 下载安装 配置Kit 第一个程序:Hello World 纯代码方式 Qt Designer拖拽

这张图把本章的知识点串起来了。你看,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玩透。

可可精品资料库