qt代码实现的获取ini文件下所有节点名称的函数,如果想要同时获取所有键值,可以修改一下函数的返回值,让它返回一个QMap<QString, QVariant>类型的对象,这样就可以存储键和值的对应关系。代码如下:
#include <QSettings>
#include <QMap>
#include <QVariant>
#include <QDebug>
// 定义一个函数,参数是ini文件的路径,返回值是一个QMap<QString, QVariant>类型的对象,包含所有键和值
QMap<QString, QVariant> getAllKeyValues(const QString& iniFilePath)
{
// 创建一个QSettings对象,指定ini文件的路径和格式
QSettings settings(iniFilePath, QSettings::IniFormat);
// 创建一个空的QMap对象,用来存储键和值
QMap<QString, QVariant> keyValues;
// 遍历ini文件中的所有组(section)
foreach (const QString& group, settings.childGroups())
{
// 进入该组
settings.beginGroup(group);
// 遍历该组中的所有键(key)
foreach (const QString& key, settings.childKeys())
{
// 获取键对应的值(value)
QVariant value = settings.value(key);
// 将键和值的对应关系添加到QMap对象中
keyValues.insert(group + "/" + key, value);
}
// 退出该组
settings.endGroup();
}
// 返回QMap对象
return keyValues;
}
// 测试函数
int main()
{
// 假设有一个名为test.ini的文件,内容如下:
/*
[electron]
position=0,0,0
velocity=0,0,0
[proton]
position=1,0,0
velocity=0,0,0
[proton]
position=-1,0,0
velocity=0,0,0
*/
// 调用函数,传入ini文件的路径
QMap<QString, QVariant> keyValues = getAllKeyValues("test.ini");
// 打印结果
qDebug() << keyValues;
// 输出:
/*
QMap(("electron/position", QVariant(QString, "0,0,0"))
("electron/velocity", QVariant(QString, "0,0,0"))
("proton/position", QVariant(QString, "-1,0,0"))
("proton/velocity", QVariant(QString, "0,0,0")))
*/
}