要使用动态加载ui窗体,首先要申明:
#include <QtUiTools>
可以在程序运行时,动态加载UI窗体。
代码如下:
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QTabWidget *tabWidget = new QTabWidget(this); QWidget *w1 = new QWidget; firstUi.setupUi(w1); QWidget *w2 = new QWidget; secondUi.setupUi(w2); tabWidget->addTab(w1,"First"); tabWidget->addTab(w2,"Second"); tabWidget->resize(300,300); connect(firstUi.childPushButton,SIGNAL(clicked()),this,SLOT(slotChild())); connect(secondUi.closePushButton,SIGNAL(clicked()),this,SLOT(close())); } void MyWidget::slotChild() { QUiLoader loader; QFile file(":/forms/third.ui"); file.open(QFile::ReadOnly); QWidget *third = loader.load(&file); file.close(); third->show(); }
下面这些代码即为运态加载,从当前目录下的forms文件夹下面引入third.ui即可。可以看出是以只读的形式打开.使用QUiLoader方式。
QUiLoader loader; QFile file(":/forms/third.ui"); file.open(QFile::ReadOnly); QWidget *third = loader.load(&file); file.close(); third->show();
截图说明: