0

doubleQStringFooオブジェクト、または何でも含むことができる QVariant があります。

QVariant何が入っているか分からないままシリアライズしたいと思います。私はこのようなシリアル化をしようとしています:

QJsonObject jsonObject;
jsonObject["myObject"] = _variant.toJsonObject();

どの関数をオーバーロードする必要がありFooますか? 使用する必要がありますQ_PROPERTYか?

4

2 に答える 2

2

これによると、任意の QVariant を QJSonObject に変換できるはずです

今、あなたの質問は次のようになります: Foo クラスを QVariant に変換する方法は?

toQVariant および fromQVariant メソッドを Foo クラスに追加して、この動作をカプセル化することをお勧めします。最も便利な QVariant クラスは、実際には QVariantMap であり、このように使用して Foo オブジェクトをシリアル化できます

QVariant toVariant( Foo song ) {
   QVariantMap map;
   map.insert("album", wstring2Utf8(song.album()));
   map.insert("artist", wstring2Utf8(song.artist()));
   map.insert("duration", song.duration());
   map.insert("fingerprint", wstring2Utf8(song.fingerprint()));
   map.insert("genre", wstring2Utf8(song.genre()));
   map.insert("title", wstring2Utf8(song.title()));
   map.insert("year", song.year());
   return map;
}
于 2014-11-26T17:11:28.877 に答える