【qt】信号,使用自定义的结构作为参数传递

错误 

 解决办法:

方法1:注册改向量

1、注册位置:在第一次使用此类链接跨线程的signal/slot之前,一般在当前类的构造函数中进行注册;
2、注册方法:在当前类的顶部包含:#include <QMetaType>,构造函数中加入代码:qRegisterMetaType<MyClass>("Myclass");
3、Myclass的引用类型需单独注册:qRegisterMetaType<MyClass>("Myclass&");
--------------------- 
作者:爱因 
来源:CSDN 
原文:https://blog.csdn.net/xbnlkdbxl/article/details/56842565 
版权声明:本文为博主原创文章,转载请附上博文链接!

 方法2:改变信号连接方式

使用connect函数的Qt::DirectConnection参数

connect(A,SIGNAL(sendA(MyClass)),B,SLOT(getA(MyClass)),Qt::DirectConnection);

但此方法官方不推荐使用,认为其不安全。

 方法3:针对结构体

在结构体的声明后面加一句宏:

Q_DECLARE_METATYPE(CustomStruct)
 

猜你喜欢

转载自blog.csdn.net/qq_28602183/article/details/84677028