从元型ID创建QVariant

Create a QVariant from a metatype id

本文关键字:QVariant 创建 ID 元型      更新时间:2023-10-16

无论如何是否有从metate ID创建QVariant?

例如:

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

所以myvariant现在是一个包含" mystruct"的默认结构值的QVariant。

我没有发现与Qvariant API一起做到这一点,我错过了什么,还是有任何技巧?

谢谢

QVariant构造函数之一:

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

请注意,copy可以是nullptr。因此,您的代码将是:

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

当然,如果您具有可用的类型本身,则没有意义的使用元型ID,则应使用fromValue

这是如何做的示例:

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

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

另一个选项是fromValue(在此处找到):

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