2016-04-14 18 views
2

あなたがこのマクロを使用してQのメタタイプとしてあなたのタイプを宣言してQVariantQList<YourType>を変換することが可能である。その後QVariantをQList <MyType>に簡単に変換できますか?

Q_DECLARE_METATYPE(MyType); 

、変換にも暗黙的である:

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

今、私の質問をされますvariantQList<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 
    } 
} 
関連する問題