就像@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文件中。