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