2016-06-24 70 views
3

有無論如何通過元類型id創建一個QVariant?從metatype id創建一個QVariant

例如:

int id = qRegisterMetaType<MyStruct>(); 
QVariant myVariant = QVariant::fromMetaType(id); 

所以myVariant現在是含有 「MYSTRUCT」 的默認構造的值的QVariant。

我還沒有找到與QVariant API做這件事,我錯過了什麼,或者有什麼竅門?

感謝

回答

4

之一QVariantconstructors做的:

QVariant::QVariant(int typeId, const void *copy) 

注意copy可以是nullptr。所以,你的代碼是:

auto id = qRegisterMetaType<MyStruct>(); 
QVariant myVariant{id, nullptr}; 

當然,如果你有該類型本身可用,也沒有必要使用元類型的ID,你應該使用fromValue

+0

謝謝,我一直在尋找它。我有可用的元類型id,但不是這段代碼中的類型本身。 – Aurelien

1

Here是例子,如何做到這一點:

相反的QVariant myVariant = QVariant::fromMetaType(id);你可以寫:

MyStruct s; 
QVariant var; 
var.setValue(s); 

另一種選擇是fromValue(發現here):

MyCustomStruct s; 
QVariant var = QVariant::fromValue(s);