Как загрузить настройки по умолчанию с KConfig на kdelib?

У меня есть вопрос об использовании 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 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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