Qt Creator 中 ui 文件和 Qt 代码关系

Qt Creator 中 ui 文件和 Qt 代码关系

通过《Qt Creator的使用》的学习,我们可以借助 Designer(界面设计器)快速设计界面。

此例子 ui 内容如下(只是简单添加了一个按钮):

工程的代码目录结构如下:

最终在工程所在目录会生成一个 ui 文件:

此 ui 文件实际上是xml 文件:

当我们编译 Qt 程序代码,Qt Creator 用 uic 工具把 ui 文件的内容转换成 C++ 代码,在工程目录同一级目录的 build- 目录下自动生成 ui_类名.h 文件,如本例子中的 ui_mywidget.h,是由mywidget.ui 利用uic 工具转换而成,只要通过Designer 修改了图形界面里的内容,ui_mywidget.h也会跟着自动同步更新内容,ui_mywidget.h 是自动生成,用户写代码时可以不用关心其实现过程

接下来我们一起分析一下此 ui_mywidget.h 和 Qt 程序代码如何关联起来(即 ui 文件和 Qt 代码关系)。mywidget.h 中自动多了一个命名空间的声明,类中多了 ui 指针对象成员:

mywidget.h 对应的 mywidget.cpp 实现过程如下:

接下来,我们一起看看 ui_mywidget.h 的实现过程:

通过这样的一步步分析,我们发现 Designer(界面设计器)设计 ui 界面最终转换为 C++ 代码(ui_类 名.h),和我们写的 Qt 代码是大同小异的,也就是说代码才是王道,Designer(界面设计器)只是辅助我 们快速设计界面,没有它,我们同样可以写 Qt 程序。假如我们对某些部件操作不熟悉,不知道该如何用 其相应函数,这时候我们通过 Designer(界面设计器)拖拽此部件,修改其所需属性,接着编译,看其自动转 换的 C++ 代码如何实现,这样既可学习其相应函数的用法,所以说,Designer(界面设计器)本身就是学习 Qt 的好老师。

那我们如何通过代码修改 ui 文件部件的属性呢? 在设计模式下,每个部件在“QObject”中都有一个“objectName”(对象名字)的属性:

“objectName”(对象名字)的属性的值(如此例子中的值“pushButton”),此值则为“ui_类名.h”中自 动创建的对象指针名:

所以,我们在 .cpp 文件某函数中,可以通过“ ui-> ”引用此成员,在 Qt Creator 中,“.(点)”键比较 智能,如果操作的是普通对象,则为“.(点)”,如果是对象指向,自动变为“->”,而且提示可以引用的成 员:

这里,通过代码修改 pushButton 的内容:

编译运行程序后,按钮的内容确实被修改:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的大博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值