【问题标题】:Read QByteArray setting written by QSetting within different Qt version.读取 QSetting 在不同 Qt 版本中写入的 QByteArray 设置。
【发布时间】: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版本保存在设置中)

  • 使用自己的 ReadFuncWriteFunc 实现自己的 QSettings 格式(ini 格式的包装器)。

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

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

【问题讨论】:

  • 在 QDataStream 中硬编码一个版本似乎很简单。它肯定比前两个选项简单。
  • 如果纯粹是 Qt 版本正在发生变化,我会选择 Qt 的 own versioning,因为我认为您的最后一个选项建议。

标签: qt serialization qt4 qsettings qbytearray


【解决方案1】:

QDataStream 的 setVersion 是最简单快捷的方式。

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

Qt5 版本供将来参考:

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

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 2013-07-08
    • 1970-01-01
    • 2011-05-22
    • 2023-04-07
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多