使用多个标签在QT中读取.ini文件

Reading .ini file in QT with multiple tags

1.For 例子

[Tag1]
key1=value1
key2=value2
key3=value3
 .
 .
[Tag2]
key1=value1
key2=value2
key3=value3
 .
 .
  1. 这是我的 abc.ini 文件的格式。我可以读取 tag1 的值,但无法读取 tag2

  2. 这是我的 Tag1 代码

    QSettings settings("abc.ini", QSettings::IniFormat);
    settings.beginGroup("Tag1");
    const QStringList childKeys = settings.childKeys();
    QHash<QString,QString>values;
    foreach (const QString &childKey,childKeys)
    values.insert(childKey, settings.value(childKey).toString());
    settings.endGroup();
    qDebug()<<values; 
    
  3. 谁能帮我读取 tag2 值并将它们存储在我定义的同一个 QHash(values) 中

您可以 begin/end 您的应用需要多少组,tag2 也可以这样做,读取子项并将它们插入地图

foreach (const QString &childKey,childKeys)
values.insert(childKey, settings.value(childKey).toString());
settings.endGroup();
qDebug()<<values;
 
//BEGIN TAG2
settings.beginGroup("Tag2");
childKeys = settings.childKeys(); //or create a new list 
foreach (const QString& childKey,childKeys)
values.insert(childKey, settings.value(childKey).toString());
settings.endGroup();
qDebug() << values; 

使用此代码

QSettings settings("file.ini", QSettings::IniFormat);
QHash<QString,QString>values;

settings.beginGroup("Tag1");
QStringList childKeys = settings.childKeys();
foreach (const QString &childKey,childKeys)
values.insert(childKey, settings.value(childKey).toString());
settings.endGroup();

settings.beginGroup("Tag2");
childKeys = settings.childKeys();
foreach (const QString &childKey,childKeys)
values.insert(childKey, settings.value(childKey).toString());
settings.endGroup();

qDebug()<<values;

在您的示例中,您在不同的组中拥有相同的密钥,因此它将使用 QHash

删除旧值

但是如果你想在同一个键中有多个值,只需将 QHash 替换为 QMultiHash