从元类型ID创建QVariant

时间:2016-06-24 19:51:08

标签: c++ qt qvariant

无论如何都要从元类型ID创建一个QVariant吗?

例如:

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

所以myVariant现在是一个包含默认构造值“MyStruct”的QVariant。

我没有找到使用QVariant API执行此操作,我是否遗漏了某些内容,或者是否有任何技巧?

由于

2 个答案:

答案 0 :(得分:4)

其中一个QVariant constructors就是这样做的:

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

请注意,copy可以是nullptr。所以,你的代码将是:

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

当然,如果您有类型本身可用,那么使用元类型ID是没有意义的,您应该使用fromValue

答案 1 :(得分:1)

Here是如何做到的示例:

而不是QVariant myVariant = QVariant::fromMetaType(id);你可以写:

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

另一个选项是fromValue(找到here):

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