要使用動態加載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();
截圖說明: