定义一个结构体
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>();