【问题标题】:Can I conveniently converty QVariant back to QList<MyType>?我可以方便地将 QVariant 转换回 QList<MyType> 吗?
【发布时间】:2016-04-14 13:01:18
【问题描述】:

如果您使用此宏将您的类型声明为 q 元类型,则可以将 QList&lt;YourType&gt; 转换为 QVariant

Q_DECLARE_METATYPE(MyType);

之后,转换甚至是隐式的:

QList<MyType> list;
QVariant variant = QVariant::fromValue(list);

现在我的问题是如何将variant 转换回QList&lt;MyType&gt;

【问题讨论】:

  • 你试过variant.value >()吗?
  • @Fabio 似乎可以编译,但我如何判断某些QVariant 是否真的包含我的列表?它似乎没有抛出异常。

标签: c++ qt qvariant


【解决方案1】:

QVariant 提供方法canConvert&lt;T&gt; 可以用来检查:

 if( variant.canConvert<QList<MyType>>() ) {
     QList<MyType> list = variant.value<QList<MyType>>();
     ...
 }

【讨论】:

    【解决方案2】:

    只是为了清楚地结合我在 cmets 中得到的内容和接受的答案。

    QList<MyType> convertToMyType(QVariant variant) {
       if( variant.canConvert<QList<MyType>>() ) {
           return variant.value<QList<MyType>>();
       }
       else {
           // Exception? Empty list?
           // depends on circumstances
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多