PDA

View Full Version : Read Several Groups in INI file from QSettings



deepal_de
4th July 2011, 11:19
i need to read all the groups in my ini file... how can i do this?

this is my ini file


[sys_1]
val1 = 10
val2 = 23
val3 = 23

[sys_2]
val1 = 56
val2 = 2
val3 = 27

[sys_3]
val1 = 84
val2 = 65
val3 = 12



this is the code im using




QSettings settings(QDir::currentPath() + "/test.ini", QSettings::IniFormat);
settings.beginGroup("SYS_1");// How to change this to read 'n' number of groups ??
const QStringList childKeys = settings.childKeys();

QStringList Keys;
QStringList values;


foreach (const QString &childKey, childKeys)
{
Keys << childKey;
values << settings.value(childKey).toString();
}
settings.endGroup();



settings.beginGroup("SYS_1");// How to change this to read 'n' number of groups ??

mcosta
4th July 2011, 12:50
You can read all group using QSettings::childGroups()

for example



QSettings settings(QDir::currentPath() + "/test.ini", QSettings::IniFormat);
Q_FOREACH (QString group, settings.childGroups()) {
settings.beginGroup(group);
const QStringList childKeys = settings.childKeys();

QStringList Keys;
QStringList values;

foreach (const QString &childKey, childKeys)
{
Keys << childKey;
values << settings.value(childKey).toString();
}
settings.endGroup();
}


or, if you read ONLY "sys_*" groups



QSettings settings(QDir::currentPath() + "/test.ini", QSettings::IniFormat);
Q_FOREACH (QString group, settings.childGroups()) {
if (!group.startsWith("sys_"))
continue;

settings.beginGroup(group);
const QStringList childKeys = settings.childKeys();

QStringList Keys;
QStringList values;

foreach (const QString &childKey, childKeys)
{
Keys << childKey;
values << settings.value(childKey).toString();
}
settings.endGroup();
}

deepal_de
5th July 2011, 09:57
How Can i add a new Group using QSettings??

my ini is this


[sys_1]
val1 = 10
val2 = 23
val3 = 23

[sys_2]
val1 = 56
val2 = 2
val3 = 27

[sys_3]
val1 = 84
val2 = 65
val3 = 12


i need to add [sys_4]..

mcosta
5th July 2011, 10:43
Using setValue



QSettings settings (...);

settings.addGroup("[sys_4]");
settings.setValue("val1", 10);
settings.setValue("val2", 20);
settings.setValue("val3", 30);
settings.endGroup();