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<QWidget *>(“leftPanel”);

ui_setButton = qFindChild<QPushButton*>(this, “setButton”);
ui_clearButton = qFindChild<QPushButton*>(this, “clearButton”);
ui_textEdit = qFindChild<QTextEdit*>(this, “textEdit”);

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值