天天看點

Qt中使用QSettings讀寫*.ini格式的檔案

内容簡介

1、使用預設分組建立和讀取資訊節點;

2、在自建分組中建立和讀取資訊節點;

3、在多級分組中建立和讀取資訊節點;

4、若分組中資訊節點的key已存在,使用setValue可直接修改該key值節點的相應資訊。

#include <QSettings>
#include <QDebug>

int main(int argc, char *argv[])
{
    //1.建立Config.ini格式檔案
    QSettings settings("./Config.ini", QSettings::IniFormat);
    settings.setIniCodec("UTF-8");
    settings.clear(); //若檔案已存在且不執行清除,則舊檔案中的資訊将保留

    settings.setValue("Version", "1.0.0.1");
    settings.setValue("Author", "fzq");

    //添加教師資訊
    settings.beginGroup("Teacher");
    settings.setValue("Name", QString::fromUtf8("王老師"));
    settings.setValue("Gender", QString::fromUtf8("男"));
    settings.endGroup();

    //添加學生資訊
    settings.beginGroup("Student");
    settings.beginGroup("Student1");
    settings.setValue("Name", QString::fromUtf8("張三"));
    settings.setValue("Gender", QString::fromUtf8("男"));
    settings.beginWriteArray("Score");
    settings.setArrayIndex(0);
    settings.setValue("Math", 90);
    settings.setValue("Chinese", "95");
    settings.setArrayIndex(1);
    settings.setValue("Math", 88);
    settings.setValue("Chinese", "98");
    settings.endArray();
    settings.endGroup();

    settings.beginGroup("Student2");
    settings.setValue("Name", QString::fromUtf8("李四"));
    settings.setValue("Gender", QString::fromUtf8("男"));
    settings.beginWriteArray("Score");
    settings.setArrayIndex(0);
    settings.setValue("Math", 78);
    settings.setValue("Chinese", "87");
    settings.setArrayIndex(1);
    settings.setValue("Math", 86);
    settings.setValue("Chinese", "90");
    settings.endArray();
    settings.endGroup();
    settings.endGroup();

    //2.讀取Config.ini中的檔案資訊
    QSettings reader("./Config.ini", QSettings::IniFormat);
    reader.setIniCodec("UTF-8");

    qDebug() << reader.value("Version").toString();
    qDebug() << reader.value("Author").toString();

    //讀取學生資訊
    reader.beginGroup("Student/Student1");
    qDebug() << reader.value("Name").toString();
    qDebug() << reader.value("Gender").toString();
    int iSize = reader.beginReadArray("Score"); //iSize為數組個數
    reader.setArrayIndex(0);
    qDebug() << reader.value("Math").toString();
    qDebug() << reader.value("Chinese").toString();
    reader.setArrayIndex(1);
    qDebug() << reader.value("Math").toString();
    qDebug() << reader.value("Chinese").toString();
    reader.endArray();
    reader.endGroup();

    reader.beginGroup("Student");
    reader.beginGroup("Student2");
    qDebug() << reader.value("Name").toString();
    qDebug() << reader.value("Gender").toString();
    reader.beginReadArray("Score");
    reader.setArrayIndex(1);
    qDebug() << reader.value("Chinese").toString();
    qDebug() << reader.value("Math").toString();
    reader.setArrayIndex(0);
    qDebug() << reader.value("Chinese").toString();
    qDebug() << reader.value("Math").toString();
    reader.endArray();
    reader.endGroup();
    reader.endGroup();

    return 0;
}
           

繼續閱讀