5

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

[button]
  enable = 1

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

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

有没有办法做到这一点?

谢谢你 :)

4

1 回答 1

1

就像@Tab 和@vahancho 指出的那样,Qt 文档对此有以下说法:

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

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

虽然文档中没有明确说明,mainwindow/titleBar/color但支持更深层次的层次结构(例如,)。当QSettings使用 将格式设置为QSettings::IniFormat的 a 持久化到磁盘上的 *.ini 文件时sync,每个分层键(例如 )的顶级部分都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文件中。

于 2018-08-14T12:59:36.573 回答