Qt: QSettings в Windows с файлами INI и комментариями

У меня есть приложение, которое я пишу с использованием Qt 4.5.2 для Windows. Я сохраняю некоторые настройки в файле INI и использую QSettings для загрузки и сохранения настроек. Я хотел бы иметь несколько комментариев в файле INI.

Например:

; Meta-info to store with the file
[General]
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true

Однако я обнаружил, когда загружаю файл настроек с

QSettings settings( "settings.ini", QSettings::IniFormat );

комментарии удаляются из файла. Файл INI перезаписывается после загрузки вызовом QSettings :: sync () (конструктор делает это автоматически). Есть ли способ сохранить комментарии после синхронизации?

Предупреждающие комментарии:

  • Мне нужны файлы INI в Windows для будущей кроссплатформенной совместимости
  • Я хочу сохранить метаинформацию в файле для справки вне приложения
  • Я подумываю о том, чтобы сделать метаинформацию разделом INI и использовать правила name = value, но предпочел бы сохранить эту информацию в виде комментария.

person dwj    schedule 11.11.2009    source источник


Ответы (1)


QSettings не имеет понятия «сохранить». Все изменения, которые вы в него вносите, считаются окончательными и записываются на диск часто и прозрачно.

В документации QSettings нет упоминания о комментариях в файлах ini. В этом есть смысл: в конце концов, это тоже может быть значение реестра. Относитесь к нему как к сгенерированному файлу: это один.

Вот мое предложение:

[General]
Comment = @String(Meta-info to store with the file)
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true

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

person György Andrasek    schedule 11.11.2009
comment
Ключевая строка: относитесь к нему как к сгенерированному файлу: это один. Думаю, этим все сказано. Если я хочу делать с файлом настройки, отличные от Qt, то на самом деле это не файл настроек Qt. - person dwj; 11.11.2009