读取不同Qt版本中Qset写入的QByteArray设置。

读取不同Qt版本中Qset写入的QByteArray设置。,qt,serialization,qt4,qsettings,qbytearray,Qt,Serialization,Qt4,Qsettings,Qbytearray,QByteArray如果使用不同版本的Qt库(比如4.5.2和4.7.1),则在文件系统上以不同格式序列化。 我在应用程序中使用QSettings将一些二进制数据存储在.ini文件中。现在应用程序迁移到Qt 4.7.1,如果更新版本的应用程序读取(使用QSettingsvalue方法),则生成的QByteArray不等于以前版本的应用程序序列化的结果 可能的解决办法: 维护应用程序使用的Qt版本(我将应用程序版本存储在设置中) 使用自己的ReadFunc和WriteFunc为QSettings

QByteArray如果使用不同版本的Qt库(比如4.5.2和4.7.1),则在文件系统上以不同格式序列化。 我在应用程序中使用QSettings将一些二进制数据存储在
.ini
文件中。现在应用程序迁移到Qt 4.7.1,如果更新版本的应用程序读取(使用QSettingsvalue方法),则生成的QByteArray不等于以前版本的应用程序序列化的结果

可能的解决办法:

  • 维护应用程序使用的Qt版本(我将应用程序版本存储在设置中)

  • 使用自己的ReadFunc和WriteFunc为QSettings实现自己的格式(ini格式的包装器)

  • 使用维护的Qt版本,在setVersion中使用QDataStream读取/写入QByteArray设置


还有更简单的解决方案吗?

QDataStream的setVersion是最简单、最快捷的方法

Qt5版本供将来参考:


在QDataStream中硬编码一个版本似乎很简单。它当然比前两个选项简单。如果纯粹是Qt版本在改变,我会选择Qt,正如我认为你最后一个选项所建议的那样。