从元类型 id 创建 QVariant

Create a QVariant from a metatype id

是否可以从元类型 id 创建 QVariant?

例如:

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

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

反正我没找到用 QVariant 做到这一点的方法 API,是我漏掉了什么,还是有什么技巧?

谢谢

Here 是如何操作的示例:

代替QVariant myVariant = QVariant::fromMetaType(id);你可以这样写:

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

另一种选择是fromValue(发现here):

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

QVariant constructors 之一做到了:

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

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

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

当然,如果你有可用的类型本身,就没有必要使用元类型 ID,你应该使用 fromValue.