*.ui界面文件对应的ui_*.h文件的作用

2023-10-30

研究*.ui界面文件对应的ui_*.h文件的作用


ui_*.h 是在对 *.ui 文件编译后生成的一个文件,ui_*.h 会出现在编译后的目录下,或与 *.ui 同目录(与项目的 shadow build 编译设置有关)。

查看 ui_*.h 文件的内容,发现它主要做了以下的一些工作:

1.定义了一个类 Ui_*,用于封装可视化设计的界面。

2.自动生成了界面各个组件的类成员变量定义。在 public 部分为界面上每个组件定义了一个指针变量,变量的名称就是设置的相关控件的名称。比如,在窗体上放置了一个 QLabel 和一个 QPushButton 并命名后,自动生成的定义是:

QLabel*LabDemo;

QPushButton*btnClos;

3.定义了 setupUi() 函数,这个函数用于创建各个界面组件,并设置其位置、大小、文字内容、字体等属性,设置信号与槽的关联。setupUi() 函数体的第一部分是根据可视化设计的界面内容,用 C++ 代码创建界面上各组件,并设置其属性。
接下来,setupUi() 调用了函数 retranslateUi(Widget),用来设置界面各组件的文字内容属性,如标签的文字、按键的文字、窗体的标题等。将界面上的文字设置的内容独立出来作为一个函数 retranslateUi()。

setupUi()函数的第三部分是设置信号于槽的关联,本文件中有一下两行

QObject::connect(btnClose,SIGNAL(clicked()),Widget,SLOT(close()))
;
QMetaObject::connectSlotsByName(Widget);

第1 行是调用 connect() 函数,将在 UI 设计器里设置的信号与槽的关联转换为语句。这里是将 btnClose 按键的 clicked() 信号与窗体 Widget 的 close() 槽函数关联起来,就是在图 4 中设置的信号与槽的关联的程序语句实现。这样,当单击 btnClose 按钮时,就会执行 Widget 的 close() 槽函数,而 close() 槽函数的功能是关闭窗口。
第 2 行是设置槽函数的关联方式,用于将 UI 设计器自动生成的组件信号的槽函数与组件信号相关联。
所以,在Widget 的构造函数里调用 ui->setupUI(this),就实现了窗体上组件的创建、属性设置、信号与槽的关联。

定义 namespace Ui,并定义一个从Ui_Widget 继承的类Widget。

namespace Ui{
class Widget:public Ui Widget{}
}

ui_widget.h 文件里实现界面功能的类是 Ui_Widget。再定义一个类 Widget 从 Ui_Widget 继承而来,并定义在 namespace Ui 里,这样 Ui:: Widget 与 widget.h 里的类 Widget 同名,但是用 namespace 区分开来。所以,界面的 Ui:: Widget 类与文件 widget.h 里定义的 Widget 类实际上是两个类,但是设计的程序员对 Qt 的处理让用户感觉不到 Ui:: Widget 类的存在。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

*.ui界面文件对应的ui_*.h文件的作用 的相关文章

  • Dubbo的几种序列化协议

    dubbo 支持哪些通信协议 支持哪些序列化协议 说一下 Hessian 的数据结构 PB 知道吗 为什么 PB 的效率是最高面试官心理分析 面试官心理分析 上一个问题 说说 dubbo 的基本工作原理 那是你必须知道的 至少要知道 dub

随机推荐

  • 802.11 - 定向多播服务(Directed multicast service)

    定向多播服务 前言 802 11v指定了定向多播服务 directed multicast service DMS 使客户端设备能够请求AP直接向其发送组播和广播帧 提高了网络效率 DMS的传输速率比定期组播每秒快数百Mb 与非DMS基础设
  • Basic Level 1035 插入与归并 (25分)

    题目 根据维基百科的定义 插入排序是迭代算法 逐一获得输入数据 逐步产生有序的输出序列 每步迭代中 算法从输入序列中取出一元素 将之插入有序序列中正确的位置 如此迭代直到全部元素有序 归并排序进行如下迭代操作 首先将原始序列看成 N 个只包
  • Java的流程控制结构以及程序跳转关键字详解

    本文详细介绍了Java中的流程控制结构 以及跳转关键字break continue return的使用 文章目录 1 流程控制结构分类 2 顺序结构 3 选择结构 3 1 if语句 3 1 1 if 3 1 2 if else 3 1 3
  • 匿名科创无人机学习心得

    1 飞控stm32串口5连接imu 串口五发送的指令会发送到imu中 如果是自定义的用户格式帧 比如 AA FF F1 03 01 01 01 A0 67 会先到imu imu的串口1接stm飞控 串口2接数传 从串口1接收到的数据会通过串
  • element-ui表单仅对el-form表单的部分字段/某个字段进行验证

    根据elementui文档 查询到validateField方法 可以给表单的某个字段添加校验 对表单单个字段进行校验 data rules email required true message 请输入邮箱 trigger change
  • 2023年最新版IDEA安装(超详细)

    个人主页 平行线也会相交 欢迎 点赞 收藏 留言 加关注 本文由 平行线也会相交 原创 收录于专栏 JavaSE primary 写在前面 IDEA的安装是建立在JDK安装好了的前提下 否则IDEA是无法使用的 具体JDK如何安装可以参照此
  • C ++ Primer(第五版)第十三章练习答案

    C Primer 第五版 第十三章练习答案 13 1 1 节练习 练习 13 1 练习 13 2 练习 13 3 练习 13 4 练习 13 5 13 1 2 节练习 练习 13 6 练习 13 7 练习 13 8 13 1 3 节练习 练
  • Dubbo与SpringCloud框架详解

    一 互联网架构演进 1 互联网项目架构 1 互联网项目与传统项目 互联网项目架构的特点 用户多 流量大 并发高 海量数据 易受攻击 功能繁琐 变更快 传统项目和互联网项目的不同 用户体验 美观 功能 速度 稳定性 大型互联网项目架构的目标
  • Qt/C++实现函数指针的使用

    1 背景 对于if else语句或者switch case语句非常累赘 且每个分支结构基本一致情况下 可以使用列表方式代替if else或者switch case 对于C语言这方面很容易实现 但是对于C 的类成员来说需要特殊的要求 2 代码
  • AVX Intrinsics各函数介绍

    SIMD相关头文件包括 include
  • 《Linux运维实战:Centos7.6一键离线部署mysql5.7.29集群》

    文章目录 一 部署背景 三 部署工具 三 部署演示 总结 整理不易 如果对你有帮助 可否点赞关注一下 一 部署背景 由于业务系统的特殊性 我们需要面向不通的客户安装我们的业务系统 而作为基础组件中的mysql针对不同的客户环境需要多次部署
  • Android 多选按钮Button

    一 先上效果图 二 准备阶段 资源文件 可根据项目需要调整样式 大小和颜色等 在res文件夹下创建以下资源文件 根据根标签选择Root Element 1 bg btn no select xml
  • 【数据对比】Parasoft Jtest如何提高Java测试ROI,加速软件交付!

    Parasoft Jtest通过提供一套工具来加速Java软件开发 以保证您的软件可靠 安全和可维护 从而最大限度地提高质量并最大限度地降低业务风险 经广泛证明 Parasoft Jtest是一个可以提高开发团队生产力和软件质量方法的集成解
  • 使用jvisualvm的jstatd方式远程监控Java程序

    使用Java自带的jvisualvm调试Java程序 可以查看CPU 内存 类及线程等信息 还可以进行Dump 无疑是一个利器 由于客户端是Windows 服务端是Linux 并且是最小安装的Linux 没有图形界面 因此需要进行远程调试
  • vue循环如何动态加载本地图片

    显示效果 代码 html
  • Excel中利用OFFSET函数解决很多个分块的一次性转置问题(非纯手动)

    今天遇到一个问题 需要将Excel中的一门课的平时成绩根据每个同学的作业次数进行转置排列 原始EXCEL表中内容如下 上表每个同学对应一个学号 该学号同学的作业和分数相应已知 现在为了统计方便 我要得到如下表的效果 因为学生人数众多 所有不
  • 【100%通过率 】【华为OD机试c++/java

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个光
  • Qt动态库调用

    在开发过程中调用第三方的动态库应该是不可避免的 调用DLL的方式也不算少 可以通过Win32 API 直接调用 Qt的API等诸多方式进行调用 这里着重介绍一下Qt自带的API调用DLL的方法 以调用DLLTest dll中返回值为bool
  • phpstorm的一些方便开发的操作

    1 php的xdebug插件 方便调试 1 1首先要确定自己的php版本 通过phpinfo 来查看 在页面上查看phpinfo的信息 复制其源码页面的所有信息 1 2 到https xdebug org 获取插件 1 3点击以下链接进行p
  • *.ui界面文件对应的ui_*.h文件的作用

    研究 ui界面文件对应的ui h文件的作用 ui h 是在对 ui 文件编译后生成的一个文件 ui h 会出现在编译后的目录下 或与 ui 同目录 与项目的 shadow build 编译设置有关 查看 ui h 文件的内容 发现它主要做了