Qt 信号与槽 传输自定义结构体跨线程访问程序异常退出问题
在使用自定义结构体的时候发现在同一个线程里面的信号发送和槽函数访问使用是正常的
当跨线程信号与槽连接访问自定义结构体时发生访问异常程序异常退出
通过尝试找到问题,解决办法如下:
自定义的结构体或类最好通过Q_DECLARE_METATYPE宏用来注册一个类(含默认构造、默认析构、拷贝构造函数)为QMetaType类型
修改前
struct Mqtt_Info{
QString id;
...
bool operator==(const Mqtt_Info&info){
return ...;
}
};
修改后
struct Mqtt_Info{
QString id;
...
bool operator==(const Mqtt_Info&info){
return ...;
}
};
Q_DECLARE_METATYPE(Mqtt_Info);
通过如上修改后,我自己的工程已正常解决了访问异常退出问题。