【问题标题】:Having hierarchical groups in ini file for QSettings在 QSettings 的 ini 文件中具有分层组
【发布时间】:2013-09-23 02:01:39
【问题描述】:

我正在使用 QSettings 在我的 GUI 中进行更改。 目前我已经了解如何将 QSetting 用于基本的键值对。

[button]
  enable = 1

但我想要有分层组。类似下面的东西

[user1]
  [button1]
     enable = 1
  [button2]
    enable = 0
[user2]
  [button1]
    enable = 1
  [button2]
    enable = 0

有什么办法吗?

谢谢你:)

【问题讨论】:

标签: qt ini


【解决方案1】:

就像@Tab 和@vahancho 指出的那样,Qt Docs 对此表示如下:

您可以使用“/”字符作为分隔符来形成分层键,类似于 Unix 文件路径。例如:

settings.setValue("mainwindow/size", win->size());
settings.setValue("mainwindow/fullScreen", win->isFullScreen());
settings.setValue("outputpanel/visible", panel->isVisible());

虽然文档中没有明确说明,但支持更深层次的层次结构(例如,mainwindow/titleBar/color)。当使用sync 将格式设置为QSettings::IniFormatQSettings 持久化到磁盘上的*.ini 文件时,每个分层键的顶级部分(例如mainwindow)被映射到Ini Section .因为 ini 文件格式不支持嵌套部分,所以键的其余部分保持不变,并成为 ini 部分内的键。这可以在QConfFileSettingsPrivate::writeIniFile看到:

    if ((slashPos = key.indexOf(QLatin1Char('/'))) != -1) {
        section = key.left(slashPos);
        key.remove(0, slashPos + 1);
    }

    QSettingsIniSection &iniSection = iniMap[section];
    iniSection.keyMap[key] = j.value();

这样,settings.setValue("mainwindow/titleBar/color", "red"); 这样的设置就变成了

[mainwindow]
titleBar/color = red

ini 文件中。

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 2013-04-18
    • 2015-11-17
    • 2011-05-01
    • 2012-10-16
    • 2014-12-09
    • 2020-10-23
    • 2010-12-15
    • 2017-11-16
    相关资源
    最近更新 更多