【QT】信号槽传递自定义数据结构

来源:互联网 发布:手机淘宝如何撤销投诉 编辑:程序博客网 时间:2024/06/05 19:02

定义一个结构体

struct myStruct{  int a;  float b;};

通过信号槽传递该结构体

connect(this, SIGNAL(m_signal(myStruct)), this, SLOT(m_slot(myStruct)));

这样做是行不通的,正确的做法:
通过Q_DECLARE_METATYPE声明自定义的结构体

struct myStruct{  int a;  float b;};Q_DECLARE_METATYPE(myStruct);

然后以QVariant代替自定义的结构体

connect(this, SIGNAL(m_signal(QVariant)), this, SLOT(m_slot(QVariant)));

在发射信号前,将自定义结构体打包为QVariant

myStruct mstruct;QVariant data;data.setValue(mstruct);emit signal_child(data);

在槽函数中,解析QVariant

myStruct mstruct = data.value<myStruct>();
1 0
原创粉丝点击