【QT】如何在信号中带上自定义类型参数?
一、问题描述
在qt开发软件时,使用信号与槽机制,信号中带了自定义的枚举类型参数,在emit发出信号时,出现以下错误
QObject::connect: Cannot queue arguments of type 'XXX'
二、解决方法
在main.cpp中添加头文件:
#include <QMetaType>
然后使用qRegisterMetaType注册自定义类型到元对象系统中,主要作用为QObject的属性系统(信号槽)中使用该自定义类型。
qRegisterMetaType<MyType>("MyType");
qRegisterMetaType使用的情况
qRegisterMetaType 必须使用的两种情况
- 如果非QMetaType内置类型要在 Qt 的属性系统中使用
- 如果非QMetaType内置类型要在 queued 信号与槽 中使用