细节就不说了,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();
}