Qt: QSettings в Windows с INI-файлами и комментариями - PullRequest
6 голосов
/ 11 ноября 2009

У меня есть приложение, которое я пишу, используя 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 , но предпочел бы сохранить эту информацию в качестве комментария

1 Ответ

6 голосов
/ 11 ноября 2009

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

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

...