要使用动态加载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();
 
 

本篇文章来源于 Linux公社网站( www.linuxidc.com)  原文链接: http://www.linuxidc.com/Linux/2011-10/46198.htm