Qt QSettings对象对ini文件增删改查!

细节就不说了,QSettings这个对象可以了解一下,这里只用到其中很少一部分功能,据说还可以读写注册表。
功能包括:

  • 读指定文件下所有结点
  • 读指定结点下所有键
  • 读指定结点下指定键的值
  • 写指定结点下指定键的值
    基本上平时项目中能用到的其实就是这些,据说QSettings还有一些奇技淫巧,有兴趣的小伙伴可以了解一下,下面贴代码。
#ifndef INIRW_H
#define INIRW_H
#include <QSettings>

class ZIniRW
{
public:
    explicit ZIniRW(const QString _filePathStr);
    ~ZIniRW();

public:
    QString IniRead(const QString session, const QString key);  //读
    QStringList IniReadAllKeys(const QString group);        //读取指定结点下的所有键
    QStringList IniReadAllGroups();        //读取所有结点
    void IniWrite(const QString session, const QString key, const QString value); //写
    void setIniPath(const QString _filePathStr);   //修改ini文件读取写入的路径

    void IniClear();
private:
    QSettings *settings=nullptr;      //settings对象
    QString iniKeyAndSessionTemplate = "%1/%2"; //key和session的模板
};

#endif // INIRW_H

#include "zinirw.h"
#include <QDebug>
ZIniRW::ZIniRW(QString _filePathStr)
{
    //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
    settings = new QSettings(_filePathStr, QSettings::IniFormat);
}
ZIniRW::~ZIniRW()   // 构析函数
{
    delete  settings;
}
QString ZIniRW::IniRead(const QString session, const QString key)   //读指定结点,指定键的值
{
    QString KAS = QString(iniKeyAndSessionTemplate).arg(session).arg(key);
    QString result = settings->value(KAS).toString();
    return result;
}


QStringList ZIniRW::IniReadAllKeys(const QString group){            //读指定结点下所有键
    QStringList result;
    settings->beginGroup(group);
    result=settings->childKeys();
    settings->endGroup();
    return  result;
}

QStringList ZIniRW::IniReadAllGroups()                           //读指定文件下所有结点
{
    return  settings->childGroups();
}


void ZIniRW::IniWrite(const QString session, const QString key, const QString value)   //写指定结点下指定键的值
{
    QString  KAS = QString(iniKeyAndSessionTemplate).arg(session).arg(key);
    qDebug() << "KAS=" << KAS;
    settings->setValue(KAS, value);
}

void ZIniRW::setIniPath(const QString _filePathStr)
{
    if(settings!=nullptr){
         delete settings;
        qDebug()<<"删除了settings对象";
    }
    //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
    settings = new QSettings(_filePathStr, QSettings::IniFormat);
}

void ZIniRW::IniClear()      //清空文件
{
    settings->clear();
}


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x县豆瓣酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值