欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT5:创建子窗体

程序员文章站 2022-05-22 21:18:57
...

1 创建子窗体的类

  • VS在项目中添加子窗体的布局:选择添加“QT Widget Form File”文件,即*.ui文件。
    QT5:创建子窗体
  • 在弹出的QT Designer界面中务必修改窗体类名,命名规则可以是【ui文件名+Class】
    QT5:创建子窗体
  • 右键新建的*.ui文件,点击”编译“,在"…项目\Debug\uic"路径下就会自动生成ui_xxxx.h头文件
    QT5:创建子窗体
    QT5:创建子窗体
  • 用VS在项目中添加一个C++类(*.cpp、*.h)用于控制窗体。
  • 在头文件中:包含刚才自动生成的ui_xxxx.h头文件。
  • 在头文件中:继承于Widge类。
  • 在头文件中:声明ui类,类名就是窗体类名。
    QT5:创建子窗体
    #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