Qt是一个跨平台的C++图形用户界面应用程序开发框架,由挪威Trolltech公司于1991年开发,现由The Qt Company(前身为Digia的Qt事业部)维护。它广泛应用于桌面、移动和嵌入式系统开发,支持Windows、Linux、macOS、Android、iOS等主流操作系统。
Qt开发套件包含:
Qt Creator(推荐)
Visual Studio
其他IDE
初学者推荐方案:
Windows用户注意:
安装验证: 安装完成后,打开Qt Creator,创建默认的Widgets Application项目,能成功编译运行即表示环境配置正确。
在我们写第一个QT程序之前,我们先来熟悉一下QT开发的流程:
点击New Project


在这里我选择Qt Widgets Application作为模板。Qt Widgets Application是 Qt 框架中用于开发传统桌面图形界面应用程序的模板:
1.它基于 Qt Widgets 框架(Qt 的经典 UI 组件库)
2.支持通过拖放控件(如按钮、文本框)快速构建界面(使用 Qt Designer 可视化设计工具)
3.自动生成包含窗口的界面文件(.ui)和 C++ 代码文件(.cpp/.h)
4.采用界面与业务逻辑分离的设计模式,便于初学者理解和使用
为什么推荐初学者优先选择这个模板?
Qt Quick Application:用 “Qt Quick/QML” 框架,适合做炫酷的现代界面(比如手机 App、动画多的桌面端),但需要学 QML 语言,入门稍复杂。
Qt Console Application:无界面的控制台程序(只有命令行窗口),适合写纯逻辑的工具(比如后台脚本)。

在Qt Creator中创建新项目时,命名需遵循以下规范:
创建路径时,路径名不要有中文。

优势说明: qmake作为Qt官方构建工具,与Qt Creator开发环境完美兼容。创建项目后仅需点击"运行"按钮即可自动完成编译过程,完全免除了复杂的配置工作。其配置文件(.pro)采用简洁直观的语法结构,特别适合作为Qt初学者的首选构建方案。
CMake:
跨平台通用构建系统,适用于大型项目或多语言混合开发(如Qt + C++ + Python)。虽然功能强大,但配置文件(CMakeLists.txt)相对复杂,建议新手暂缓使用。
Qbs: Qt推出的新一代构建工具,编译速度优于qmake。但目前生态成熟度不及qmake和CMake,主流项目仍以前两者为主,而且用的人很少公司也没有怎么维护了。
总结:新手直接选择qmake即可,点击"下一步"继续。

在Base Class(父类)选项中,需要选择主窗口的Qt Widgets基类类型。不同基类提供不同的窗口功能特性,具体说明如下:
QMainWindow详解
QWidget
QDialog
结构对比
学习路径建议
对于初学者,建议直接选择QWidget作为父类进行基础学习。我们在这里选择QWidget,作为父类。

QT 基类一经选定,系统便会自动生成对应的头文件(.h)和源文件(.cpp),并预填充基础代码框架。对于初次接触 C++框架的开发者而言,这种自动化功能尤为便利 ----它免去了手动编写所有文件的繁琐过程,大大提升了开发效率。

我们保持默认就行。

编译器我们选择MinGW(GCC for Windows) 安装的什么版本就选什么版本(我的是6.10.1)。如果以后要使用Visual Studio来开发可以选Microsoft Visual C++ 2022 ,它是微软官方推出的专业编译器(VS用的就是这个)。
Debug
包含完整调试信息,执行效率较低,支持调试功能,适用于开发阶段,生成的文件体积较大。
Release
经过优化编译,运行效率高,不支持调试,适用于产品发布,生成的文件体积较小。
性能分析版本Profile
包含性能分析数据,主要用于性能优化,初学者可暂不关注。
我们在这里选择Debug就行。

这一页是项目创建的总结页面,我们默认就行。

到这里我们的项目就创建完了。且构建工具帮我们生成.h文件和.cpp文件和部分代码。
QT事项程序有两种方式:1.图形化2.纯代码

双击widget.ui,我们会进入这个面板。

点击左侧的display Widgets中的Label

直接拖动到设计界面

双击就可以标签内容了

点击左下角的运行图标,并等待构建完成。

这样,我们就用QT实现了第一个程序

关闭所有项目和程序,重复上述步骤创建一个新项目test2。
更改widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QLabel>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QLabel* label = new QLabel(this);//指向父节点
label->setText("hello world!");
}
Widget::~Widget()
{
delete ui;
}直接运行

这样我们就通过纯代码的方式实现了程序。本文就到这里,下篇文章将解释为什么传this指针,为什么new这个对象没有手动释放内存以及各个文件的内容和联系。