QT5:创建子窗体
程序员文章站
2022-05-22 21:18:57
...
文章目录
1 创建子窗体的类
- VS在项目中添加子窗体的布局:选择添加“QT Widget Form File”文件,即*.ui文件。
- 在弹出的QT Designer界面中务必修改窗体类名,命名规则可以是【ui文件名+Class】
- 右键新建的*.ui文件,点击”编译“,在"…项目\Debug\uic"路径下就会自动生成ui_xxxx.h头文件
- 用VS在项目中添加一个C++类(*.cpp、*.h)用于控制窗体。
- 在头文件中:包含刚才自动生成的ui_xxxx.h头文件。
- 在头文件中:继承于Widge类。
- 在头文件中:声明ui类,类名就是窗体类名。
#pragma once #include <QtWidgets/QMainWindow> //包含QT库 #include "ui_Form_ShowArrayOfExportTable.h" //包含自动生成的"ui_XXX.h"头文件 class Form_ShowArrayOfExportTable : public QWidget //继承于QWidget { Q_OBJECT //必要的宏 public: Form_ShowArrayOfExportTable(QWidget* parent = Q_NULLPTR); //构造器 private: Ui::Form_ShowArrayOfExportTableClass ui;//ui类名即是窗体类名,在自动生成的"ui_XXX.h"头文件中已定义 };
- 在源文件中:定义构造器并执行ui.setupUi(this);显示界面
#include "Form_ShowArrayOfExportTable.h" Form_ShowArrayOfExportTable::Form_ShowArrayOfExportTable(QWidget* parent) : QWidget(parent) //构造函数初始化列表QWidget { //其他组件需在setupUi函数调用后生成,否则会被UI覆盖导致无法点击 ui.setupUi(this); }
2 从主窗体中显示子窗体
- 要注意使用new关键字创建子窗体对象
MainForm::MainForm(QWidget* parent) : QMainWindow(parent) //构造函数初始化列表QMainWindow { ui.setupUi(this); //显示子窗体,必须用new关键字创建子窗体对象,否则此函数执行完毕后对象会被销毁。 Form_ShowArrayOfExportTable* form_ShowArrayOfExportTable=new Form_ShowArrayOfExportTable(); form_ShowArrayOfExportTable->show(); }
参考资料
QT 主窗口和子窗口相互切换示例 https://www.cnblogs.com/lsgxeva/p/7808906.html