【问题标题】:Create a QVariant from a metatype id从元类型 id 创建 QVariant
【发布时间】:2016-06-24 19:51:07
【问题描述】:

是否有从元类型 id 创建 QVariant 的方法?

例如:

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

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

我没有找到使用 QVariant API 执行此操作的方法,是我遗漏了什么,还是有什么技巧?

谢谢

【问题讨论】:

    标签: c++ qt qvariant


    【解决方案1】:

    其中一个QVariant constructors 做到了:

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

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

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

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

    【讨论】:

    • 谢谢,我正在找它。我有可用的元类型 ID,但在这段代码中没有类型本身。
    【解决方案2】:

    Here 是一个例子:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 2023-04-10
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多