一.QSetting介绍
QSettings类提供了一种持久的、与平台无关的应用程序设置存储功能。
QSettings能读写配置文件,当配置文件不存在时,可生成配置文件。
二.基本用法
QSettings 提供了简单易用的 API,下面介绍一些常用的操作:
1.写入配置信息
使用 setValue() 函数可以将键值对存储到配置文件中:
settings.setValue("key", "value");
2.读取配置信息
使用 value() 函数可以读取配置文件中的键对应的值:
QString value = settings.value("key").toString();
3.删除配置信息
使用 remove() 函数可以删除配置文件中的指定键:
settings.remove("key");
三.代码示例
1.代码
#include?"widget.h"
#include?"ui_widget.h"
#include?<QtCore/QtCore>
#include?<QFile>
Widget::Widget(QWidget?*parent)
????:?QWidget(parent)
????,?ui(new?Ui::Widget)
{
????ui->setupUi(this);
????initIni();
????setValuetoIni("NAME1",?7);
????initIni();
}
Widget::~Widget()
{
????delete?ui;
}
void?Widget::setValuetoIni(QString?key,?double?value)
{
????QString?groupNmae?=?"setingA";
????QSettings?settings("Config.ini",?QSettings::IniFormat);
????settings.beginGroup(groupNmae);
????settings.setValue(key,?value);
????settings.endGroup();
}
void?Widget::initIni()
{
????//文件路径+文件名
????QString?fileName?=?"Config.ini";
????//创建配置目标,输入文件路径,文件格式
????QSettings?settings(fileName,?QSettings::IniFormat);
????//设置文件编码,配置文件中使用中文时,这是必须的,否则乱码
????settings.setIniCodec(QTextCodec::codecForName("UTF-8"));
????QString?groupNmae?=?"setingA";
????QStringList?groups?=?settings.childGroups();
????bool?found?=?false;
????for(const?QString?&group:groups){??//判断setingA节点是否存在
????????if(groups.contains(groupNmae)){
????????????found?=?true;
????????????break;
????????}
????}
????if(!found)?//如果之前没有setingA字段就设置添加
????{
????????settings.beginGroup(groupNmae);
????????settings.setValue("NAME1",?1);
????????settings.setValue("NAME2",?2);
????????settings.setValue("NAME3",?0.1);
????????settings.setValue("NAME4",?1.7);
????????settings.endGroup();
????}
????settings.beginGroup(groupNmae);
????int?value1?=?settings.value("NAME1",0).toInt();??//如果YAxisRmin不存在,返回默认值10
????int?value2?=?settings.value("NAME2",0).toInt();
????double?value3?=?settings.value("NAME3",0.1).toDouble();
????double?value4?=?settings.value("NAME4",0.1).toDouble();
????settings.endGroup();
????qDebug()<<value1<<value2<<value3<<value4;
}
2.打印结果
3.文件内容