如何在kdelib上使用KConfig加载默认设置?

时间:2008-12-18 02:10:47

标签: c++ settings kde kdelibs kconfig

我对KConfig的用法有疑问。我能够在我的.kde4 / share / config / _appname_rc配置文件中编写和读取设置

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

但我不明白如何使用“默认”配置文件在我第一次运行我的应用程序时读取,或者如果应用程序设置需要重置。

我更喜欢不使用KConfig XT,因为我的项目很小,带有kcfgc *文件的KConfigXT似乎过多。

提前谢谢

2 个答案:

答案 0 :(得分:3)

首先,这个:

KConfigGroup conf = KConfigGroup(basicconf.group(“Settings”));

可以写得更清楚,至少是imho,如:

KConfigGroup conf(& basicconf,“Settings”);

另请注意,“常规”是最常用的“通用”组名称。反正...

您可以在应用程序中安装默认配置文件;将它安装到$ PREFIX / share / config /,这可以通过CMakeLists.txt文件轻松实现:

安装(FILES<您的配置文件> DESTINATION $ {CONFIG_INSTALL_DIR})

KConfig从那里处理所有合并的魔力;你不需要做任何事情。

至于KConfigXT过度使用,使用它有很多好处,包括自动化配置对话框,确保强制执行边界和合法值等。编写一个小文件,在CMakeLists.txt文件中弹出一个条目通常很多工作少于做手工免费提供的工作。对此有一个很棒的教程on TechBase

答案 1 :(得分:1)

使用KGlobal::config()获取指向应用程序拥有的默认KConfig对象的指针。它自动引用$ KDEHOME / share / config中的文件。

KConfig XT有意义,因为

  • 生成的YourSettings对象的API特定于您的应用程序;比conf.writeEntry(“filepath”,path)更容易理解YourSettings :: setFilePath(path)的含义;
  • 您的应用可能会增长;从KConfig XT开始比起来更容易,然后更换它。
  • 默认值是通过.kcfg XML指定的,而不是在应用的几个地方硬编码,并且您有一个setDefault()方法来重置所有值。