Qt操作ini文件

操作文件,无非就是读与写,以下为Qt读写ini文件的代码。

#include "widget.h"

#include <QApplication>
#include <QSettings>
#include <QDebug>


// 写ini配置文件
void setIni()
{
    QSettings * myini = new QSettings("config.ini", QSettings::IniFormat);
    myini->setValue("person/name", "张三");
    myini->setValue("person/age", "12");
    myini->setValue("cat/name", "小小");
    delete myini;
}

// 读ini配置文件
void getIni()
{
    QSettings * myini = new QSettings("config.ini", QSettings::IniFormat);
    QString personName = myini->value("person/name").toString();
    QString catName = myini->value("cat/name").toString();
    delete myini;

    qDebug() << "人的姓名: " << personName ;
    qDebug() << "猫的姓名: " << catName ;
}



int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    // 写配置文件
    setIni();
    // 读配置文件
    getIni();

    return a.exec();
}

在这里插入图片描述
在这里插入图片描述

Qt读写ini文件(含源码+注释)

一、示例Ini文件内容

下方为本文所使用的ini文件的内容

[group1]
key1=val1
key2=val2
sameKay=sameVal

[group2]
jian1=zhi1
jian2=zhi2
sameKay=sameZhi

二、Ini文件的写入

ini文件不需要像xml和json一样需要使用QFile打开文件,只需将文件路径及文件格式传入即可(下方代码运行完毕,ini文件则会更新,若文件不存在,会自动创建)

//创建QSettings对象并指定ini文件路径并将格式设置为ini
QSettings setting("./iniTest.ini", QSettings::IniFormat);
//创建第一个分组(创建分组的第一种方法)
setting.beginGroup("group1");
//添加第一个分组中的键值对
setting.setValue("key1", "val1");
setting.setValue("key2", "val2");
setting.setValue("sameKay", "sameVal");
//设置当前分组结束
setting.endGroup();
//添加第二个分组以及其键值对(创建分组的第二种方法)
setting.setValue("group2/jian1", "zhi1");
setting.setValue("group2/jian2", "zhi2");
setting.setValue("group2/sameKay", "sameZhi");

三、Ini文件的读取

3.1 第一种读取方式
好处:步骤不那么繁琐,代码简洁
坏处:不能指定读取某一组的内容,必须读取ini文件所有内容

//创建QSettings对象并指定ini文件路径并将格式设置为ini
QSettings setting("./iniTest.ini", QSettings::IniFormat);
//读取ini文件内容的第一种方法
qDebug() << "第一种读取方法";
foreach (QString key, setting.allKeys())
{
    //将当前的键值对打印输出
    qDebug() << key << setting.value(key).toString();
}

3.2 第二种读取方式
好处:能指定读取某一组的内容
坏处:步骤相较第一种方式更加繁琐

//创建QSettings对象并指定ini文件路径并将格式设置为ini
QSettings setting("./iniTest.ini", QSettings::IniFormat);
qDebug() << "第二种读取方法";
//获取ini文件中所有的组
QStringList groupList = setting.childGroups();
//指定读取某组的数据
setting.beginGroup(groupList[1]);
//遍历该组的键
foreach (QString key, setting.childKeys())
{
    //将当前的键值对打印输出
    qDebug() << key << setting.value(key).toString();
}

3.3 读取结果示例
下方为两种读取方法输出示例
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值