当前位置: 首页 > news >正文

QT中读取QSetting文件

1.ini文件的格式
在这里插入图片描述
头文件

#include <QSettings>
#include <QStringList>
#include <QtCore>
#include <QDebug>

2.读文件

//ini文件的读取
void iniTest::readIniFile(QString filePath)
{
    //1.打开ini文件
    QSettings m_iniFile(filePath, QSettings::IniFormat);
    //2.获取所有的分组
    QStringList groupList = m_iniFile.childGroups();
    //3.分别遍历每一个分组
    foreach(QString group, groupList)
    {
        m_iniFile.beginGroup(group);
        //读取所有的参数
        /*
        int age = m_iniFile.value("age").toInt();
        QString nam = m_iniFile.value("name").toString();
        QString sex = m_iniFile.value("sex").toString();
        */
        QStringList childKeysList = m_iniFile.childKeys();
        foreach(QString key, childKeysList)
        {
            if (m_iniFile.value(key).type() == QMetaType::QString)
            {
                qDebug() << key << " = " << m_iniFile.value(key).toString();
            }
            else if (m_iniFile.value(key).type() == QMetaType::Int)
            {
                qDebug() << key << " = " << m_iniFile.value(key).toInt();
            }
            
        }
        qDebug() << "\n";
        m_iniFile.endGroup();
    }
}

3.写文件

//ini文件的写入
void iniTest::writeIniFile(QString filePath)
{
    //1.打开ini文件
    QSettings m_iniFile(filePath, QSettings::IniFormat);
    //2.设置组
    m_iniFile.beginGroup("newSection");
    //2.设置值
    m_iniFile.setValue("newKey1", "10086");
    m_iniFile.setValue("newKey2", "10000");
    m_iniFile.setValue("newKey3", "10010");
    m_iniFile.setValue("newKey4", "10010");
    m_iniFile.endGroup();
}

二.含有节的ini文件读取
1.读取


//复杂ini文件的读取
void iniTest::readIniFile_fuza(QString filePath)
{
    //1.打开ini文件
    QSettings m_iniFile(filePath, QSettings::IniFormat);

    //2.读取appliedConfigID
    QString appliedConfigID = m_iniFile.value("AppliedConfigID").toString();
    //3.遍历分组
    QStringList groups = m_iniFile.childGroups();
    foreach(QString group, groups)
    {
        if (appliedConfigID == group)
        {
            int configSize = m_iniFile.beginReadArray(group);
            //int configSize = m_iniFile.value("size").toInt();
            //4.读取每个分组下的配置
            for (int i = 0; i < configSize; i++)
            {
                m_iniFile.setArrayIndex(i);
                QString A = m_iniFile.value("A").toString();
                int B = m_iniFile.value("B").toInt();
                double C = m_iniFile.value("C").toDouble();
                qDebug() << A << "\t" << B << "\t" << C << "\n";

            }
            m_iniFile.endArray();
        }
    }
}

2.写入


//复杂ini文件的写入
void iniTest::writeIniFile_fuza(QString filePath)
{
    bool flag = false;
    // 1.打开ini文件
    QSettings m_iniFile(filePath, QSettings::IniFormat);
    //2.通过要写入组的ID找到当前组
    QString writeGrp = "{xx-tt-yy-rr-ee}";
    //3.遍历分组
    QStringList groups = m_iniFile.childGroups();
    foreach(QString group, groups)
    {
        //找到当前要写入的组
        if (writeGrp == group)
        {
            m_iniFile.beginWriteArray(group);
            //假设配置项为11项目
            int configSize = 11;
            for (int i = 0; i < configSize; i++)
            {
                m_iniFile.setArrayIndex(i);
                m_iniFile.setValue("A", QString("xxx%1").arg(QString::number(i)));
                m_iniFile.setValue("B", QString("xxx%1").arg(QString::number(2 * i)));
                m_iniFile.setValue("C", QString("xxx%1").arg(QString::number(200 * i + 200)));
            }
            m_iniFile.endArray();
            flag = true;
        }
    }

    //4.如果没有找到分组,那么新建分组
    if (!flag)
    {
        m_iniFile.beginWriteArray(writeGrp);
        m_iniFile.setValue("name", "configNew");
        int configSize = 11;
        for (int i = 0; i < configSize; i++)
        {
            m_iniFile.setArrayIndex(i);
            m_iniFile.setValue("A", QString("xxx%1").arg(QString::number(i)));
            m_iniFile.setValue("B", QString("xxx%1").arg(QString::number(2 * i)));
            m_iniFile.setValue("C", QString("xxx%1").arg(QString::number(200 * i + 200)));
        }
        m_iniFile.endArray();
    }
}

3.ini文件

[General]
AppliedConfigID={adggfdahfg}

[%7Badggfdahfg%7D]
name=NewConfig1
size=5
1\A=fgdh
1\B=
1\C=600
2\A=dghf
2\B=1
3\A=jty
3\C=600
4\A=jyt
4\B=
5\A=fgnngf
5\B=
5\C=600

[%7Badgxxdahfg%7D]
name=NewConfig2
size=3
1\A=xxx0
1\B=xxx0
1\C=xxx200
2\A=xxx1
2\B=xxx2
3\A=xxx2
3\C=xxx600

[%7Bgdsagfdsadf%7D]
name=NewConfig22
size=0

[%7Bxx-tt-yy-rr-ee%7D]
name=configNew
1\A=xxx0
1\B=xxx0
1\C=xxx200
2\A=xxx1
2\B=xxx2
2\C=xxx400
3\A=xxx2
3\B=xxx4
3\C=xxx600
4\A=xxx3
4\B=xxx6
4\C=xxx800
5\A=xxx4
5\B=xxx8
5\C=xxx1000
6\A=xxx5
6\B=xxx10
6\C=xxx1200
7\A=xxx6
7\B=xxx12
7\C=xxx1400
8\A=xxx7
8\B=xxx14
8\C=xxx1600
9\A=xxx8
9\B=xxx16
9\C=xxx1800
10\A=xxx9
10\B=xxx18
10\C=xxx2000
11\A=xxx10
11\B=xxx20
11\C=xxx2200
size=11

相关文章:

  • Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)
  • 【eNSP实战】使用ACL实现路由器安全
  • 如何搭建个人静态住宅IP:从零开始
  • re-二维四向迷宫题
  • MFC窗口的创建/消息映射机制
  • Python 3.13实现数据未来预测功能(详细功能实现及环境搭建)
  • 前端性能优化指南
  • 414. 第三大的数
  • 在linux中查看/dev/shm容量及使用率
  • JavaScript基础篇:三、 变量与数据类型
  • IMA+DeepSeekR1+本地知识库撰写NOIP2008普及组T3【传球游戏】题解
  • vue3系列:vite+vue3怎么配置通过ip和端口打开浏览器
  • 什么是海外仓WMS系统?跟ERP系统有什么区别?
  • docker中安装Ghost报错Error: connect ECONNREFUSED 127.0.0.1:3306
  • 【机器人-基础知识】标定 - 相机内参求解原理(单应性矩阵、内参约束方程)
  • 【CF】Day6——Codeforces Round 942 (Div. 2) BC + Codeforces Round 941 (Div. 2) C
  • 《CircleCI:CircleCI:解锁软件开发持续集成(CI)和持续部署(CD)高效密码》:此文为AI自动生成
  • AdaLoRA 参数 配置:CAUSAL_LM“ 表示因果语言模型任务
  • python开发订单查询功能(flask+orm bee)
  • DeepSeek + Notion:知识管理管家
  • 爬坡难下坡险,居民出行难题如何解?
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查
  • 俄代表团:16日上午将继续“等候乌代表团”
  • 思想史家陈谷嘉逝世,曾为岳麓书院当代复兴奠定重要基础
  • 微软宣布全球裁员约3%:涉及约6000人,侧重经理层
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会