学习日志:Qt代码架构组成

学习日志:Qt代码架构组成

日期: 2025-06-14

一、项目结构概览

  1. 项目文件(.pro)

    • 声明源码、头文件、资源和 UI 文件,如:

      SOURCES += main.cpp \
                 mywg.cpp
      HEADERS += mywg.h
      FORMS   += mywg.ui
      
    • qmake 根据 .pro 生成 Makefile,实现编译规则自动化。

  2. 界面文件(.ui)

    • 由 Qt Designer 设计的 XML 描述文件。

    • .pro 中使用 FORMS += mywg.ui,由 uic 自动生成 ui_mywg.h

  3. 头文件(.h)

    • mywg.h:定义窗口类 myWG,包含一个指向 Ui::myWG 的指针成员。

    • ui_mywg.h:由 uic 生成,定义了界面布局的 Ui_myWG 类和 Ui::myWG

  4. 源文件(.cpp)

    • mywg.cpp:实现 myWG 的构造与析构,调用 ui->setupUi(this) 完成界面挂载。

    • main.cpp:程序入口,创建 QApplication 对象、主窗口实例并调用 show(),最后 exec() 进入事件循环。

  5. Makefile(或 Makefile.Debug/Makefile.Release)

    • 由 qmake 生成,包含对 uicmoc 等工具的调用规则。

    • 规则示例:

      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)。

二、关键流程

  1. 项目配置:编辑 .pro 文件,使用 qmake 生成 Makefile。

  2. UI 转换make 时,依赖规则触发 uic,将 .ui 转为 ui_*.h

  3. 编译 moc:处理含 Q_OBJECT 的头文件,生成元对象代码。

  4. 编译源代码:编译 main.cppmywg.cpp,链接 Qt 库。

  5. 运行mainQApplication a(argc, argv) 初始化环境,w.show() 显示窗口,a.exec() 进入事件循环。

三、内存与对象管理

  • 栈(Stack):局部变量、myWG w; 等对象分配在栈上,作用域结束自动析构。

  • 堆(Heap)new Ui::myWG 分配在堆上,需要在析构函数中 delete ui;

  • 静态存储区static 或全局对象存放于静态区,程序整个生命周期存在。

四、心得体会

通过本次实践,掌握了 Qt 构建系统的核心组成:

  • .pro 文件对项目配置的中心作用;

  • uicmoc 在自动生成代码中的不可或缺性;

  • 源代码与自动生成头文件的协作模式;

  • Qt 的事件循环与父子对象模型。

下一步计划:深入学习信号与槽模型-视图架构,并尝试在本项目中集成更多交互功能。

posted @ 2025-06-14 18:42  阿坦  阅读(34)  评论(0)    收藏  举报