QSettings с разными типами

Я пытаюсь сохранить некоторые параметры с другим типом, используя QSettings (ini-файл, Linux).
Когда я читаю значения из этого, используя settings.value(), я просто получаю QStrings.
Есть ли способ сохранить тип QVariant внутри этого файла настроек или вместо этого я должен использовать другое хранилище?

Заранее спасибо!


person Eckler    schedule 18.09.2015    source источник


Ответы (2)


Согласно документам, функция QSettings::value() возвращает QVariant. Затем это должно быть преобразовано в любой тип, который вы хотите.

Вы можете использовать QVariant::type(), чтобы найти тип, который вы сохранили в QSettings.

Именно так QSettings должен работать и работает при использовании NativeFormat в Windows.

Однако при использовании ini-файла и для большинства простых типов, включая строки и целые числа, QSettings использует одно и то же простое представление в ini-файле и поэтому объединяет эти типы. Все они возвращаются как тип QString в QVariant.

Более сложные типы в должным образом закодированы в ini-файле, поэтому эти типы сохраняются.

person strubbly    schedule 18.09.2015
comment
Мне нужно знать, в какой тип я должен преобразовать этот QVariant. Можно ли получить эту информацию из QSettings? - person Eckler; 18.09.2015
comment
Вы можете позвонить type по номеру QVariant. - person strubbly; 18.09.2015
comment
QVariant::type() возвращает QString вместо int, bool и string. - person Eckler; 18.09.2015
comment
@ N1ghtLight О да, Эклер прав - формат файла ini неправильно сохраняет простые типы. Однако работает для более сложных типов. Я добавил некоторые подробности в пост. - person strubbly; 19.09.2015