Qt元类型(MetaType)

文章目录

    • Q_DECLARE_METATYPE
    • qRegisterMetaType

Q_DECLARE_METATYPE

使用Q_DECLARE_METATYPE标记自定义类型,可以让QMetaType查询到类型,也可以让QVariant识别

#include 
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;
}

你可能感兴趣的:(Qt)