【问题标题】:Reading .ini file in QT with multiple tags使用多个标签在 QT 中读取 .ini 文件
【发布时间】:2020-11-15 22:02:08
【问题描述】:

1.例如

[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) 中

【问题讨论】:

    标签: c++ qt ini


    【解决方案1】:

    您可以根据应用的需要开始/结束任意数量的组,因此请为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; 
    

    【讨论】:

    • 我试过了,但我没有得到输出 childKeys = settings.childKeys(); //或者在这一行创建一个新列表我收到一个错误,因为没有可行的重载'='你能看看这个
    • 已解决,谢谢
    【解决方案2】:

    使用此代码

    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

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      相关资源
      最近更新 更多