Qt 信号槽使用自定义结构体提示make sure is “XXX”registered using qRegisterMetaType()解决方法
使用命名空间
#include <QMetaType>
//自定义结构体
struct STRUCT_DATA{
unsigned char byte[8];
unsigned int u16array[2];
}
namespace ABC{
#define REGIST_STRUCT {
qRegisterMetaType<>("STRUCT_DATA");}
}
调用类中,构造函数内直接调用 REGIST_STRUCT,信号槽连接,使用STRUCT_DATA就不会出现如上的报错了。
如下:.h文件里
signals:
void OnEmitSignal(STRUCT_DATA data);
slots:
void On_Recv_Slots(STRUCT_DATA data);
.cpp文件中建立槽连接
connect(&obj,SIGNAL(OnEmitSignal(STRUCT_DATA)),this,SLOT(On_Recv_Slots(STRUCT_DATA)));
.cpp文件条件触发信号
STRUCT_DATA data;
..//数据打包
emit OnEmitSignal(data);
槽函数实现略
记录一下