要使用动态加载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();
截图说明: