我可以方便地将 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
}
}
如果您使用此宏将类型声明为 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
}
}