Qt信号与槽,以及ui的思考 (**)

Qt信号与槽:从C++的角度来看,直接使用类指针,也是可以访问 ui部件中的信号的。

那么,使用信号与槽有什么好处呢?

1. 可以将模块之间的联系聚合,方便阅读;也就是将模块之间的交互信息(connect)集中起来放在一块。

2. 模块之间是独立的,只是通过connect来建立联系。这种方式,使得模块之间的耦合度达到最小?

信号和槽函数,可以视之为接口标记。一般槽函数在类中声明 public;

signal的处理方法:在A-->B( connect)-->C( ui)模型中,C发出信号信号,需要在类中声明 signal,不要让 B直接访问 C ui部件中发出的信号,虽然可以这样,但是,这会破坏 C的封装,导致其接口信息模糊。一个模块的接口信息,应该统一放在一起,比如放在同一个类中进行声明。

A-->B( connect)-->C( ui):A实例化B,B实例化C,A和C之间的信息交互,通过B( connect)。

A和C:可以构造成封闭的独立模块,C负责建立起AC之间的信息交互规则。只需要了解它们的 signal和 slots函数就可以了,至于它们内部模块的构造,可以随时更改:这是松耦合的好处。

3 当出现多个信号与多个模块之间存在复杂关系的时候,与直接使用 C++指针相比,信号与槽在阅读,封装等等方面的优势越加明显。

注意1:?使用信号与槽并非必须,但却可以让代码变得清晰。

注意2:语文概念的晦涩问题,导致信号与槽变的基础语文概念释义得难以理解,说白了,就是信号发送接口子系统,与信号接收接口子系统而已。

信号发送接口子系统:包括信号发送者,信号类型;

信号接收接口子系统:包括信号接收者,以及对接收到的信号进行处理;即所谓的槽函数。

接收者所能够接收的信号类型,由 QtCreator提供支持,内置类型信号,以及自定义类型信号(这种信号未被默认提供支持,因此,需要向 QtCreator报备,也就是注册之后,才能使用。)

ui部件:手工代码模式与自动生成模式相比,自动生成模式包含的设置项全面,意味着程序的字节数变大。对于小容量的 RAM应用不利。

直接修改自动生成的 ui文件 ui_xxxx.h,并移动到其他文件中:修改不易?且Qt内部自动生成代码也不容易理解,或不清晰。

子窗口访问主窗口

主窗口创造出子窗口:通过主窗口,可以直接访问子窗口。

子窗口访问主窗口

主窗口在创造出子窗口时,将主窗口的指针、传给子窗口。

通过信号槽。

参考:

Qt中子窗口访问父窗口的成员变量

https://www.ngui.cc/el/894022.html?action=onClick

 初步思考,本文未必正确。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值