2

このマクロを使用して、型を q メタ型として宣言すれば、変換することができQList<YourType>ます。QVariant

Q_DECLARE_METATYPE(MyType);

その後、変換は暗黙的です。

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

今私の質問は、にvariant戻す方法QList<MyType>です。

4

2 に答える 2

1

QVariant provides method canConvert<T> that you can use to check:

 if( variant.canConvert<QList<MyType>>() ) {
     QList<MyType> list = variant.value<QList<MyType>>();
     ...
 }
于 2016-04-14T13:32:39.360 に答える
0

コメントで得たものと受け入れられた回答を明確に組み合わせるだけです。

QList<MyType> convertToMyType(QVariant variant) {
   if( variant.canConvert<QList<MyType>>() ) {
       return variant.value<QList<MyType>>();
   }
   else {
       // Exception? Empty list?
       // depends on circumstances
   }
}
于 2016-04-14T13:53:53.417 に答える