Qt元類型(MetaType)

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章