Прочтите настройку QByteArray, записанную QSetting в другой версии Qt.

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

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

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

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

  • чтение / запись настроек QByteArray с помощью QDataStream в setVersion с использованием поддерживаемой версии Qt.

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


person MedBrother    schedule 13.05.2011    source источник
comment
Жесткое кодирование версии в QDataStream кажется довольно простым. Это конечно проще, чем первые два варианта.   -  person Arnold Spence    schedule 13.05.2011
comment
Если меняется только версия Qt, я бы выбрал собственное управление версиями Qt. , как я думаю, ваш последний вариант подсказывает.   -  person Bart    schedule 13.05.2011


Ответы (1)


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

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

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

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

person Phil Hannent    schedule 13.06.2011