2016-04-14 74 views
2

有可能QList<YourType>QVariant提供您使用此宏声明的类型为q元类型转换:我可以方便地将QVariant转换回QList <MyType>?

Q_DECLARE_METATYPE(MyType); 

之后,转换甚至暗示:

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

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

+1

你试过variant.value >()吗? – Fabio

+0

@Fabio似乎编译好了,但我怎么知道某个'QVariant'实际上是否包含我的列表?它似乎没有抛出异常。 –

回答

1

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

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

只是为了清楚地结合了我的意见得到了和接受的答案。

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