Существует ли обязательный безопасный способ хранения данных в QSettings в кроссплатформенной среде? - PullRequest
0 голосов
/ 08 апреля 2011

Mac-версия моего приложения только что начала ломать свой полноэкранный режим и обычные макеты, которые я сохраняю и восстанавливаю, используя QSettings. Даже старые версии моего приложения теперь воспроизводятся для моих клиентов.

Я просто гуглил что-то похожее, когда нашел сообщение об ошибке, содержащее интересную строку:

QSettings s;
restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray());

При сохранении в реестр компьютеров plist или windows нужно ли форматировать данные в этом из Local8bit ()?

http://bugreports.qt -project.org / просмотр / QTBUG-8631
http://bugreports.qt -project.org / безопасный / крепление / 13400 / main.cpp

1 Ответ

1 голос
/ 08 апреля 2011

Это закодированные данные, это просто буквальное «состояние». Значения правильно кодируются и декодируются, если вы используете QByteArray или QString , Часть QString :: fromLocal8Bit () предназначена для преобразования строкового литерала в исходном файле в строку Unicode. Хорошей практикой является придерживаться ASCII в исходных файлах, поскольку другие кодировки, такие как UTF-8, обычно не работают со всеми компиляторами, особенно MSVC.

Для преобразования литералов в QString я бы предложил использовать QLatin1String:

QLatin1String("state")

fromLocal8Bit (), строго говоря, ложно, так как локальная 8-битная кодировка не имеет ничего общего с кодировкой исходного файла, откуда происходит литерал. Но так как «состояние» не содержит символов, отличных от ascii, это не должно иметь значения.

...