Qt信号槽传递自定义结构体

    Qt的信号和槽可以传递int、double等c++常用类型变量,也可以传递QVector、QMap等Qt的容器类(当然也可以传递Qt定义的类型)。

   那么Qt的信号和槽如何传递自定义的结构体呢。

   首先在定义结构体的同时需要使用Q_DECLARE_METATYPE。通过这个宏定义可以将自定义的类型注册到Qt的元类型中,从而被Qt识别。

  其次在信号端发射的信号类型应该是QVariant,QVariant是多种类型的联合,QVariant类中有个SetValue(T& value)方法,将自定义 T 类型的数据保存到QVariant对象中,可以理解为是自定义类型被封装成了QVariant的形式,这样,我们自定义的T类型的对象就能够通过所有参数和返回值为QVarian类型传递。

 

     在发射信号之前,将自定义的结构体用QVariant包裹一下,就可以发射了。

 

    在槽函数这边,信号类型也定义为QVariant,接收后用该结构体将数据取出来就完成了自定义结构体信号的一次传递

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值