要使用动态加载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();
}
可以看出是以只读的形式打开.使用QUiLoader方式。
QUiLoader loader;
QFile file(":/forms/third.ui");
file.open(QFile::ReadOnly);
QWidget *third = loader.load(&file);
file.close();
third->show();
截图说明: