其适用于:
(1)UI文件是程序运行中途创建生成的,在同程序的其他地方调用,没法进行uic。
(2)前端设计和功能实现相分离,前端设计人员和功能实现人员只要事前沟通好相关组件的名称等,就可以进行独立开发,能提高效率。
需要用到头文件< QUiLoader >,注意配置好相应的依赖目录。
实现
QUiLoader loader;
QString fileName = "./func.ui"; //.ui文件的路径
QFile file(fileName);
if (!file.open(QFile::ReadOnly))//打开文件
return;
loader.addPluginPath(QApplication::applicationDirPath());//将给定路径添加到加载程序在查找插件时将搜索的路径列表中。
m_pCustomWidget = loader.load(&file, this);
file.close();
if (m_pCustomWidget)
{
ui.verticalLayout->addWidget(m_pCustomWidget);//在主ui中动态加载.ui的界面
}
使用.ui中的控件对象,需要用findChild进行查找。
m_pbtnError = m_pCustomWidget->findChild<HomagToolButton *>("m_btnError");
m_pbtnMenu = m_pCustomWidget->findChild<QPushButton *>("m_btnMenu");
m_pstackedWidget = m_pCustomWidget->findChild<QStackedWidget *>("stackedWidget");