在ini文件中有QSettings的分层组

时间:2013-09-18 10:41:55

标签: qt ini

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

[button]
  enable = 1

但我想拥有等级组。像下面的东西

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

有没有办法做到这一点?

谢谢你:)

1 个答案:

答案 0 :(得分:0)

就像@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)。使用QSettings将格式设置为QSettings::IniFormatsync持久保存到磁盘上的* .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 文件中的