【发布时间】:2011-08-24 20:28:37
【问题描述】:
如果使用不同版本的 Qt 库(例如 4.5.2 和 4.7.1),
QByteArray 在文件系统上以不同格式序列化。
我在我的应用程序中使用 QSettings 将一些二进制数据存储在.ini 文件中。现在应用程序迁移到 Qt 4.7.1 并且如果更新版本的应用程序读取(使用 QSettings 值方法)结果 QByteArray 不等于之前版本的序列化应用程序。
可能的解决方案:
维护app使用的Qt版本(我将app版本保存在设置中)
-
使用自己的 ReadFunc 和 WriteFunc 实现自己的 QSettings 格式(ini 格式的包装器)。
使用维护的 Qt 版本在 setVersion 中使用 QDataStream 读取/写入 QByteArray 设置。
还有更简单的解决方案吗?
【问题讨论】:
-
在 QDataStream 中硬编码一个版本似乎很简单。它肯定比前两个选项简单。
-
如果纯粹是 Qt 版本正在发生变化,我会选择 Qt 的 own versioning,因为我认为您的最后一个选项建议。
标签: qt serialization qt4 qsettings qbytearray