如果使用不同版本的 Qt 库(例如 4.5.2 与 4.7.1),QByteArray 在文件系统上以不同格式序列化。
我在应用程序中使用 QSettings 将一些二进制数据存储在 .ini
文件中。现在应用程序已迁移到 Qt 4.7.1,如果应用程序的更新版本读取(使用 QSettings 值方法),则结果 QByteArray 不等于以前版本的序列化应用程序。
可能的解决方案:
-
维护应用程序使用的Qt版本(我将应用程序版本存储在设置中)
-
实现QSettings 自己的格式(ini 格式的包装),具有自己的 ReadFunc 和 WriteFunc。
-
使用维护的Qt版本在setVersion中使用QDataStream读取/写入QByteArray设置。
还有更简单的解决方案吗?
QByteArray is serialized in different formats on the file system if the different version of Qt library is used (say 4.5.2 against 4.7.1).
I use the QSettings in my application to store the some binary data in the .ini
file. Now application is migrated to Qt 4.7.1 and if updated version of app reads (using the QSettings value method) the resulted QByteArray is not equal to the serialized by previous version of app.
Possible solution:
-
maintain the version of Qt used by app (I store the app version in the settings)
-
implement the own format for QSettings (wrapper for ini format) with own ReadFunc and WriteFunc.
-
read/write QByteArray settings using the QDataStream within setVersion using the maintained Qt version.
Any more simple solutions?
发布评论
评论(1)
QDataStream的setVersion是最简单、最快的方法。
http://doc.qt.io/qt-4.8/qdatastream.html#setVersion
并供将来参考 Qt5 版本:
http://doc.qt.io/qt-5.5/qdatastream.html#setVersion
QDataStream's setVersion is the simplest and quickest way.
http://doc.qt.io/qt-4.8/qdatastream.html#setVersion
and for future reference the Qt5 version:
http://doc.qt.io/qt-5.5/qdatastream.html#setVersion