我正在使用QSettings在我的GUI中进行更改。 目前我已经了解了如何将QSetting用于基本键=值对。
[button]
enable = 1
但我想拥有等级组。像下面的东西
[user1]
[button1]
enable = 1
[button2]
enable = 0
[user2]
[button1]
enable = 1
[button2]
enable = 0
有没有办法做到这一点?
谢谢你:)
答案 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::IniFormat的sync
持久保存到磁盘上的* .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 文件中的。