学习日志:Qt代码架构组成
学习日志:Qt代码架构组成
日期: 2025-06-14
一、项目结构概览
-
项目文件(.pro)
-
声明源码、头文件、资源和 UI 文件,如:
SOURCES += main.cpp \ mywg.cpp HEADERS += mywg.h FORMS += mywg.ui -
qmake 根据
.pro生成 Makefile,实现编译规则自动化。
-
-
界面文件(.ui)
-
由 Qt Designer 设计的 XML 描述文件。
-
在
.pro中使用FORMS += mywg.ui,由 uic 自动生成ui_mywg.h。
-
-
头文件(.h)
-
mywg.h:定义窗口类myWG,包含一个指向Ui::myWG的指针成员。 -
ui_mywg.h:由 uic 生成,定义了界面布局的Ui_myWG类和Ui::myWG。
-
-
源文件(.cpp)
-
mywg.cpp:实现myWG的构造与析构,调用ui->setupUi(this)完成界面挂载。 -
main.cpp:程序入口,创建QApplication对象、主窗口实例并调用show(),最后exec()进入事件循环。
-
-
Makefile(或 Makefile.Debug/Makefile.Release)
-
由 qmake 生成,包含对
uic、moc等工具的调用规则。 -
规则示例:
ui_mywg.h: ../../mywg.ui \ C:/Qt6.9/.../uic.exe \tC:/Qt6.9/.../uic.exe ..\\..\\mywg.ui -o ui_mywg.h -
自动化生成与清理(
compiler_uic_make_all/compiler_uic_clean)。
-
二、关键流程
-
项目配置:编辑
.pro文件,使用qmake生成 Makefile。 -
UI 转换:
make时,依赖规则触发uic,将.ui转为ui_*.h。 -
编译 moc:处理含
Q_OBJECT的头文件,生成元对象代码。 -
编译源代码:编译
main.cpp、mywg.cpp,链接 Qt 库。 -
运行:
main中QApplication a(argc, argv)初始化环境,w.show()显示窗口,a.exec()进入事件循环。
三、内存与对象管理
-
栈(Stack):局部变量、
myWG w;等对象分配在栈上,作用域结束自动析构。 -
堆(Heap):
new Ui::myWG分配在堆上,需要在析构函数中delete ui;。 -
静态存储区:
static或全局对象存放于静态区,程序整个生命周期存在。
四、心得体会
通过本次实践,掌握了 Qt 构建系统的核心组成:
-
.pro文件对项目配置的中心作用; -
uic与moc在自动生成代码中的不可或缺性; -
源代码与自动生成头文件的协作模式;
-
Qt 的事件循环与父子对象模型。
下一步计划:深入学习信号与槽、模型-视图架构,并尝试在本项目中集成更多交互功能。

浙公网安备 33010602011771号