2

如果您使用此宏将类型声明为 q 元类型,则可以转换QList<YourType>为:QVariant

Q_DECLARE_METATYPE(MyType);

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

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

现在我的问题是如何转换variantQList<MyType>.

4

2 回答 2

1

QVariant提供canConvert<T>可用于检查的方法:

 if( variant.canConvert<QList<MyType>>() ) {
     QList<MyType> list = variant.value<QList<MyType>>();
     ...
 }
于 2016-04-14T13:32:39.360 回答
0

只是为了清楚地将我在评论中得到的内容和接受的答案结合起来。

QList<MyType> convertToMyType(QVariant variant) {
   if( variant.canConvert<QList<MyType>>() ) {
       return variant.value<QList<MyType>>();
   }
   else {
       // Exception? Empty list?
       // depends on circumstances
   }
}
于 2016-04-14T13:53:53.417 回答