Q_DECLARE_METATYPE
使用Q_DECLARE_METATYPE标记自定义类型,可以让QMetaType查询到类型,也可以让QVariant识别。
#include <QMetaType>
struct MyStruct {
QString name;
QString color;
};
Q_DECLARE_METATYPE(MyStruct)
MyStruct myStruct;
QVariant variant;
variant.setValue(myStruct); // 不使用Q_DECLARE_METATYPEQ标记的自定义类型会出现编译错误。
MyStruct myStruct2 = variant.value<MyStruct>();
qRegisterMetaType
在main函数中使用qRegisterMetaType注册自定义类型到元对象系统中,可在跨线程的信号槽中进行参数传递。
例如:
int main(int argc, char *argv[]) {
...
qRegisterMetaType<MyStruct>(“MyStruct”);
...
return 0;
}