当前位置: 首页 > news >正文

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

相关文章:

  • Oracle11gR2 静默建库,删库和配置
  • Qt ui在程序中的使用
  • grub2编译安装
  • 项目中用到的架构模式(持续更新)
  • 校园招聘笔试题(A卷)
  • javadoc 命令
  • 校园招聘笔试题(B卷)
  • 进程与线程的一个简单解释
  • 嵌入式C开发人员的最好的0x10道笔试题
  • nullnullDefining and Launching the Query 定义和启动查询
  • IT知名公司工资一览
  • C++ const的用法
  • sourceforge开源项目
  • Winform 常用技巧
  • Keil 仿真之外设控制(System Viewer)
  • ES6指北【2】—— 箭头函数
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 03Go 类型总结
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Android组件 - 收藏集 - 掘金
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java8 Stream Pipelines 浅析
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • MySQL的数据类型
  • npx命令介绍
  • php中curl和soap方式请求服务超时问题
  • Python学习之路13-记分
  • react 代码优化(一) ——事件处理
  • React16时代,该用什么姿势写 React ?
  • 记录一下第一次使用npm
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 看域名解析域名安全对SEO的影响
  • 前端性能优化——回流与重绘
  • 全栈开发——Linux
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 通过npm或yarn自动生成vue组件
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 消息队列系列二(IOT中消息队列的应用)
  • 原生Ajax
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #pragam once 和 #ifndef 预编译头
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #预处理和函数的对比以及条件编译
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (动态规划)5. 最长回文子串 java解决
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (一)Linux+Windows下安装ffmpeg