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

发布于 2024-11-07 08:31:39 字数 591 浏览 5 评论 0 原文

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

可能的解决方案:

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

  • 实现QSettings 自己的格式(ini 格式的包装),具有自己的 ReadFuncWriteFunc

  • 使用维护的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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好倦 2024-11-14 08:31:39

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文