3

異なるバージョンのQtライブラリが使用されている場合(4.7.1に対して4.5.2など)、 QByteArrayはファイルシステム上で異なる形式でシリアル化されます。アプリケーションでQSettingsを使用して、いくつかのバイナリデータを.iniファイルに保存します。これで、アプリケーションはQt 4.7.1に移行され、更新されたバージョンのアプリが(QSettings valueメソッドを使用して)読み取った場合、結果のQByteArrayは以前のバージョンのアプリによってシリアル化されたものと等しくなりません。

考えられる解決策:

  • アプリが使用するQtのバージョンを維持します(アプリのバージョンを設定に保存します)

  • 独自のReadFuncおよびWriteFuncを使用して、 QSettingsの独自の形式(ini形式のラッパー)を実装します。

  • 維持されているQtバージョンを使用してsetVersion内のQDataStreamを使用してQByteArray設定を読み取り/書き込みます。

もっと簡単な解決策はありますか?

4

1 に答える 1

2

QDataStream の setVersion は、最も簡単で迅速な方法です。

http://doc.qt.io/qt-4.8/qdatastream.html#setVersion

今後の参考のために、Qt5バージョン:

http://doc.qt.io/qt-5.5/qdatastream.html#setVersion

于 2011-06-13T13:06:22.260 に答える