Прочитайте настройку QByteArray, написанную QSetting в другой версии Qt. - PullRequest
3 голосов
/ 13 мая 2011

QByteArray сериализуется в разных форматах в файловой системе, если используется другая версия библиотеки Qt (скажем, 4.5.2 против 4.7.1).Я использую QSettings в своем приложении для хранения некоторых двоичных данных в файле .ini.Теперь приложение перенесено в Qt 4.7.1, и если обновленная версия приложения считывает (используя метод QSettings value), полученный QByteArray не совпадает с сериализованным предыдущей версией приложения.

Возможное решение:

  • поддерживать версию Qt, используемую приложением (я храню версию приложения в настройках)

  • реализовать собственный формат для QSettings (обертка для формата ini) с собственными ReadFunc и WriteFunc .

  • read/ write QByteArray с использованием QDataStream в setVersion с использованием поддерживаемой версии Qt.

Есть еще более простые решения?

1 Ответ

2 голосов
/ 13 июня 2011

QDataStream setVersion - это самый простой и быстрый способ.

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

и для дальнейшего использования версия Qt5:

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

...