如果您使用此宏将类型声明为 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
}
}