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