Qt ui的动态加载

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2010/08/09/5798359.aspx

接着上一篇 ui在程序中的使用的例子进行ui动态加载的讲解

Qt提供了一个QtUiTools模块,包含了与ui相关的类,如QUiLoader,可使程序在运行中动态加载Designer设计生成的.ui文件,本实例即利用QUiLoader类实现实例10中的弹出子窗口显示部分。

实现动态加载ui,首先需在程序中包含QtUiTools模块的头文件:

#include <QtUiTools>

并且新建一个.qrc文件,描述.ui文件的路径:

<!DOCTYPE RCC><RCC version="1.0">

<qresource>

<file>forms/third.ui</file>

</qresource>

</RCC>

将弹出子窗口的.ui文件放在forms目录下。

在程序的.pro文件中加入以下两行代码:

CONFIG += uitools

RESOURCES += uiloader.qrc

最后修改slotChild()槽函数的实现代码如下:

void MyWidget::slotChild()

{

1 QUiLoader loader;

2 QFile file(":/forms/third.ui");

3 file.open(QFile::ReadOnly);

4 QWidget *third = loader.load(&file);

5 file.close();

6 third->show();

}

第1行新建一个QUiLoader对象。

第2行指定所需.ui文件的路径,新建一个QFile对象。

第3行以只读方式打开此文件。

第4行调用QUiLoader对象的load()函数将.ui文件装载到一个QWidget对象中,并将此QWidget对象返回。

第5行关闭文件。

第6行调用show()显示此子窗口。

这种动态加载的方式不用生成ui_third.h文件,在程序运行时才会被加载。采用这种方式最大的好处是可以在不重新编译程序的情况下,改变窗口的布局和显示。但也存在不方便的地方,即在主程序中无法对子窗口的控件进行操作。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值