【问题标题】:How to load default settings with KConfig on kdelib?如何在 kdelib 上使用 KConfig 加载默认设置?
【发布时间】:2008-12-18 02:10:46
【问题描述】:

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

提前谢谢你

【问题讨论】:

    标签: c++ settings kde kdelibs kconfig


    【解决方案1】:

    首先,这个:

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

    可以写得更清楚,至少恕我直言,如下:

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

    另请注意,“General”是最常用的“通用”组名。总之……

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

    安装(文件 DESTINATION ${CONFIG_INSTALL_DIR})

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

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

    【讨论】:

    • 比你 aaron seigo,祝贺 kde4 的发展状态:D
    【解决方案2】:

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

    KConfig XT 之所以有意义,是因为

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2013-10-02
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多