qt信号槽复杂参数传递,以结构体为例

参考博客:QT中信号和槽传递复杂参数,以QMap为例(QVariant)_qt 信号发送qmap-优快云博客

前面的步骤都差不多:

1、首先包含头文件:#include <QMetaType> , 在使用信号类(或主窗口类)的构造函数中,通过如下的方式注册数据类型:qRegisterMetaType<QVariant>("QVariant");

2、然后分别申明信号和槽函数,并建立连接:

创建信号:signals: void signalMsgBox(QVariant);

创建槽:private slots: void slotMsgBox(QVariant);

建立connect的连接

3、在发送信号的地方进行数据封装下:

struct Test;//结构体Test

QVariant dataVar; //申明通用数据对象

dataVar.setValue(Test); //数据封装下

emit signalMsgBox(dataVar); //发送信号

4、在槽函数中进行数据还原:

Test test = dataVar.value<Test>();//还原为原来的数据结构类型

注意一个点:Q_DECLARE_METATYPE(Test ),这个需要在使用的头文件最后注册下

注意里面放的是结构体的名字,例如:

class A

{

};

Q_DECLARE_METATYPE(Test )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值