详解QUiLoader 动态加载.ui文件
来源:互联网 发布:南京网络教育 编辑:程序博客网 时间:2024/06/03 17:54
1.适用情况:
动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui 文件。不用 uic工具把.ui 文件变成等价的 c++代码,而是在程序运行过程中需要用到UI文件时,用 QUiLoader 加载.ui文件,达到相同目的。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.适用环境:
1.UI文件是程序运行中途创建生成的,在同程序的其他地方调用,没法进行uic。
2.前端设计和功能实现相分离,前端设计人员和功能实现人员只要事前沟通好相关组件的名称等,就可以进行独立开发,能提高效率。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.配置信息:
3.1若使用的.pro文件生成,需要在.pro文件中需要加上
3.2如使用的是VS开发工具,需要添加QtUiToolsd.lib/QtUiTools.lib 库
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.代码实现:
4.1头文件
#include <QtUiTools/QtUiTools>
4.2核心代码
//传入UI文件路径QString uifilePath = "./demo.ui";QUiLoader uiLoader; QFile file(uifilePath); file.open(QIODevice::ReadOnly);//setWorkingDirectory 设置工作目录:若UI文件中引用了其他目录的资源,可在此处设置工作目录const QDir &workdir(uifileWorkPath);uiLoader.setWorkingDirectory(workdir);//加载UI文件QWidget* getWidget = uiLoader.load(&file,parent);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.元素查找
对于UI上的各个组件,可用下面方法进行查找
//1.查找名称为“读写的”QPushButtonQPushButton *getButton = getWidget->findChild<QPushButton *>("读写"); //2.查找所有QPushButtonQList<QPushButton *> getAllPButtons = getWidget->findChildren<QPushButton *>();
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6.信号槽机制
connect(getButton,SIGNAL(clicked()),this,SLOT(setButtonClicked()));处理ui_setButton的clicked()信号。
但拜元对象机制所赐,还有一劳永逸的方法
QMetaObject::connectSlotsByName(this);该函数会将this的所有子对象都连接上一个槽(slot),槽的命名规范为
on_对象名_信号名,比如上面的setButton的clicked(),将会生成一个on_setButton_clicked()的槽,你只要实现该槽函数就可以了。
- 详解QUiLoader 动态加载.ui文件
- 使用QUiLoader来动态加载.ui文件
- 使用QUiLoader来动态加载.ui文件
- QUiLoader加载ui文件
- QuiLoader 动态加载 QMainWindow
- Qt ui界面文件的调用--quiloader
- QT 动态加载UI文件注意事项
- QT 动态加载UI文件注意事项
- 动态加载UI
- 运行加载.ui文件
- QUiLoader:彻底分离你的Ui设计工作(含例子)
- QUiLoader:彻底分离你的Ui设计工作(含例子)
- QUiLoader:彻底分离你的Ui设计工作(含例子)
- 利用Loader来动态加载不同的QML文件来改变UI
- 动态加载CSS文件
- 动态加载SCRIPT文件
- 动态加载SCRIPT文件
- 动态加载资源文件
- 在O(1)时间删除链表结点--总结
- POJ 2593(最大2连续子段和)
- linux下crontab导致硬盘满
- poj 2299 Ultra-QuickSort(归并排序求逆序数)
- 【转】linux window环境下svn服务器搭建
- 详解QUiLoader 动态加载.ui文件
- 设计模式之享元模式
- PayPal外贸生意经--外贸零售之节日经济
- phpMyadmin 导入 出现“无法读取文件” 错误,解决办法
- shell 总结之 select表达式和for 循环
- hdu 4300 Clairewd’s message 扩展kmp
- 导出EXCEL
- 编码知识学习笔记之一
- windows 2003、2008关机或重启时的理由选择提示去掉