Как загрузить настройки по умолчанию с 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() для сброса всех значений.