我可以方便地将 QVariant 转换回 QList<MyType> 吗?

Can I conveniently converty QVariant back to QList<MyType>?

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

Q_DECLARE_METATYPE(MyType);

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

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

现在我的问题是如何将 variant 转换回 QList<MyType>

QVariant 提供方法 canConvert<T> 可以用来检查:

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

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

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