从元类型 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
.
是否可以从元类型 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
.