QT学习笔记-GUI程序结构与运行机制
项目结构
以 QWidget 作为窗口基类则创建出来的文件有
1 | test2.pro:qmake构建系统的项目配置文件,存储了各种项目的设置 |
test2.pro
文件
1 | QT += core gui # 引用 core 和 gui 库 |
变量的含义,详细见 qmake manual
- QT:qt 模块的列表,在用到模块时要手动添加
- CONFIG:通用配置选项
- DEFINES:预处理定义列表
- TEMPLATE:模板,是 app 还是 lib,默认是 app
- SOURCES:源文件
- HEADERS:头文件
- FORMS:ui 文件
- TARGET:生成的可执行文件名称,默认与项目同名
$${xxx}
:用 xxx
的值替换当前的位置。
Widget.h
文件
1 |
|
Widget.cpp
1 |
|
信号与槽
信号与槽是 qt 编程的基本,也是 qt 的一大创新。多种实现方式中最常用的是
1 | QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot())); |
connect()
是 QObject 类中的静态成员函数,在使用时,QObject 通常可以省略。SIGNAL
与 SLOT
是 QT 的宏,用于将参数转换为相应的字符串。
以下是一些注意事项:
- 一个信号可以连接多个槽函数
- 多个信号可以连接同一个参函数
1 | ui->setupUi(this); |
- 一个信号可以接连另一个信号
QT 还支持通过函数名称将信号与槽关联,需要先开启这个功能
1 | QMetaObject::connectSlotsByName(Dialog); |
使用的格式为
1 | void on_<object name>_<signal name>(<signal parameters>); |
示例:
1 | void on_chkBoxUnder_clicked(bool checked); |
QT 项目构建过程基本原理
一个 qt 项目会包括以下的内容:
- QT c++头文件
- 窗口 ui 文件
- 资源文件
qt 会使用元对象系统中的元对象编译器(MOC)对项目中的头文件进行预处理。生成一个标准的 c++程序。
同时,ui 文件会使用 UIC,资源文件会使用 RCC 分别将其编译成标准 c++程序,然后再使用标准 c++编译器(比如 Mingw 64)来生成可执行文件。