Qt5中动态加载ui文件写的界面(用QtUiTools /QUiLoader实现)

由QUiLoader类提供的表单加载器对象用于构造用户界面。这个用户界面可以从任何QIODevice中检索;例如,QFile对象可用于获取存储在项目资源中的表单。QUiLoader::load()函数接受文件中包含的用户界面描述,并构造表单小部件。
使用QUiLoader 动态加载ui文件可以说是做到了,界面设计和逻辑的相互分离

QUiLoader的实用方法
QTabWidget *tab = new QTabWidget(this);
setCentralWidget(tab);

QUiLoader loader;
QFile file(":/f/test.ui");
file.open(QFile::ReadOnly);
QWidget *formwidget = loader.load(&file, this);
file.close();
tab->addTab(formwidget ,tr("test uiloader"));

通过load函数即可根据.ui文件创建出一个对应的QWidget对象,后面的this指针是QWidget *类型的,你可以用其它窗体去作为formWidget的父窗体。父窗体被显示的时候,该formWidget窗体就会被显示,当然更好的方法是用一个QLayout来管理formWidget,因为父窗体可能不止一个子窗体,我这里作为一个演示,将QTabWidget作为窗体的父窗体。

如果你还想对cuteqt.ui中的那些子窗体信号作处理,那么可以用qFindChild去找到它们。
QWidget *leftPanel = Q_NULLPTR;
leftPanel = formwidget ->findChild(“leftPanel”);

ui_setButton = qFindChild(this, “setButton”);
ui_clearButton = qFindChild(this, “clearButton”);
ui_textEdit = qFindChild(this, “textEdit”);

比如你可以用
connect(ui_setButton,SIGNAL(clicked()),this,SLOT(setButtonClicked()));处理ui_setButton的clicked()信号。

使用QUiLoader要检查pro文件加上CONFIG += uitools
在头文件引用#include
file 中的:/f/test.ui 是需要添加到你的qrc资源文件当中的不然容易造成路径错误
An error has occurred while reading the UI file at line 1, column 0: Premature end of document.

你可能感兴趣的:(qt,qt,ui,开发语言)