0

我有一个关于 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 似乎过多。

先感谢您

4

2 回答 2

3

首先,这个:

KConfigGroup conf = KConfigGroup(basicconf.group("Settings"));

至少恕我直言,可以更清楚地写成:

KConfigGroup conf(&basicconf, "设置");

另请注意,“General”是最常用的“通用”组名。无论如何...

您可以在应用程序中安装默认配置文件;将其安装到 $PREFIX/share/config/,这很容易在您的 CMakeLists.txt 文件中实现:

install(FILES <你的配置文件> DESTINATION ${CONFIG_INSTALL_DIR})

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

至于 KConfigXT 太过分了,使用它有很多好处,包括自动化您的配置对话框,确保强制执行边界和合法值等。编写一个小文件,在 CMakeLists.txt 文件中弹出一个条目通常比用手免费做它给你的东西。关于这方面的TechBase有一个很棒的教程。

于 2008-12-18T16:20:48.367 回答
1

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

KConfig XT是有意义的,因为

  • 生成的 YourSettings 对象的 API 特定于您的应用程序;比 conf.writeEntry("filepath", path); 更容易理解 YourSettings::setFilePath(path) 的含义。
  • 您的应用程序可能会增长;开始使用 KConfig XT 比 rip 和稍后替换它更容易。
  • 默认值是在 .kcfg XML 中指定的,而不是在应用程序的几个地方硬编码,并且您有一个 setDefault() 方法来重置所有值。
于 2008-12-18T11:41:48.990 回答