Qt信号与槽的参数传递原理

本文简要探讨了Qt中信号与槽的参数传递原理,强调了两个关键点:1) 自定义数据类型需声明为元数据类型以进行正确传递;2) 队列连接方式下,自定义数据类型需实现拷贝函数以确保数据正确拷贝到队列。此外,介绍了Qt的ConnectionType枚举,包括不同连接类型的特点和使用场景。

我们这里不讲信号和槽的概念,请各自网络上搜索。但是很多人可能没想过,emit一个信号后,信号的参数是如何传递到槽里面。当然,支持信号和槽,对象就必须要有元系统,通过元系统来传递参数。不过这里有两个问题需要考虑到,否则参数是无法正确传递的。

1,如果传递的是自定义数据类型

对于自定义数据类型,需要声明该数据类型为元数据,qRegisterMetaType

2,我们知道,在connect信号和槽的时候,可以指定是连接类型,比如,direct和queue,当然还有其他的。如果是采用队列方式,参数是会被放在队列的。那么这里就涉及到数据的拷贝,于是我们需要实现自定义数据类型的拷贝函数,否则数据将无法正确地拷贝到队列,也就无法正确的传递了。


个人觉得这两点是必须要知道的,否则信号与槽就无法正确的使用。不过我这里并没有详细描述。之后有时间再补充。谢谢


附Qt文档:

enum Qt::ConnectionType
This enum describes the types of connection that can be used between signals and slots. In particular, it determines whether a particular signal is delivered to a slot immediately or queued for delivery at a later time.


Constant Value Description
Qt::AutoConnection 0 (Def

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值