Как загрузить настройки по умолчанию с KConfig на kdelib? - PullRequest
0 голосов
/ 18 декабря 2008

У меня вопрос по использованию KConfig. Я могу написать и прочитать настройки в моем конфигурационном файле .kde4 / share / config / _appname_rc, например

 KConfig basicconf;
 KConfigGroup conf = KConfigGroup(basicconf.group("Settings"));
 conf.writeEntry("filepath",QString("/path/"));
 basicconf.sync();

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

Я предпочитаю не использовать KConfig XT, потому что мой проект крошечный и KConfigXT с файлами kcfgc * кажется чрезмерным.

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

Ответы [ 2 ]

3 голосов
/ 18 декабря 2008

Во-первых, это:

KConfigGroup conf = KConfigGroup (basicconf.group ("Настройки"));

можно написать более четко, по крайней мере, imho, как:

KConfigGroup conf (& basicconf, "Настройки");

Также обратите внимание, что «Общее» является наиболее распространенным «общим» именем группы. В любом случае ...

Вы можете установить файл конфигурации по умолчанию с вашим приложением; установите его в $ PREFIX / share / config /, что легко достигается с помощью этого в вашем файле CMakeLists.txt:

установить (ФАЙЛЫ <ваш конфигурационный файл> DESTINATION $ {CONFIG_INSTALL_DIR})

KConfig обрабатывает всю магию слияния оттуда; тебе не нужно ничего делать.

Что касается того, что KConfigXT является излишним, у него есть много преимуществ, в том числе автоматизация диалоговых окон конфигурации, обеспечение соблюдения границ и допустимых значений и т. Д. Написание небольшого файла, добавление записи в файл CMakeLists.txt обычно много меньше работы, чем делать то, что он дает вам бесплатно вручную. Об этом есть отличное руководство по TechBase .

1 голос
/ 18 декабря 2008

Используйте KGlobal :: config () , чтобы получить указатель на объект KConfig по умолчанию, принадлежащий вашему приложению. Он автоматически ссылается на файл в $ KDEHOME / share / config.

KConfig XT может иметь смысл, потому что

  • API сгенерированного объекта YourSettings зависит от вашего приложения; немного проще понять значение YourSettings :: setFilePath (path), чем conf.writeEntry ("filepath", path);
  • Ваше приложение может расти; проще начать с KConfig XT, чем разорвать и заменить его позже.
  • Значения по умолчанию указаны в XML-файле .kcfg, а не жестко заданы в нескольких местах вашего приложения, и у вас есть метод setDefault () для сброса всех значений.
...