当前位置: 首页 > 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.读取appliedConfigIDQString 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

http://www.mrgr.cn/news/94443.html

相关文章:

  • Android 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装
  • C++ primer plus 类和对象下
  • VSCode C/C++ 开发环境完整配置及常见问题(自用)
  • 神经网络中常用语言特性(python)(待完善)
  • 软考计算机知识-流水线
  • 【AWS入门】2025 AWS亚马逊云科技账户注册指南
  • 解释VLA和具身智能之间的关系
  • 插入排序算法的SIMD优化
  • JavaScript基础篇:六、 函数基础
  • 模版题目的集合
  • 《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成
  • Machine Learning: 十大基本机器学习算法
  • 【春招笔试】2025.03.12-小米春招笔试
  • MySQL -- 表的约束
  • 数据结构概览
  • 云服务器新手配置内网穿透服务(frp)
  • steam 赛题
  • JavaScript基础篇:四、 运算符与表达式
  • c语言笔记 字符串函数---strstr strlen strtok以及sizeof
  • 带宽管理配置实验