QT:QSettings配置文件读取ini
情景:用户想每次打开之后还是上次的配置,每次都需要配置非常麻烦!
程序猿(内心):你是方便了,我还得加代码keke.
configuration.ini
[section]
key = val
Ps:我们可以直接根据key值来获取val值,当如果有多个key值是重复的那么我们可以通过设置section来区分相同的key,并取出自己想要key的val值。
小技巧
- 把读取配置文件放到构造里面,写配置文件放到析构里面这样就可以启动程序还原上次的配置关闭程序就可以保存当前配置
代码实现
核心代码
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 小技巧 - 把读取配置文件放到构造里面,写配置文件放到析构里面这样就可以启动程序还原上次的配置关闭程序就可以保存当前配置
/*
会在程序的运行的根目录创建一个名为configuration后缀为ini 的文件 configuration.ini
configuration.ini
[section]
key = val
*/
// 配置文件 名、格式
QSettings settings("configuration.ini", QSettings::IniFormat);
// 如没有重复key需要区分可以省却2行代码
settings.beginGroup("test1");
ui->wEdit->setText(settings.value("val1").toString()); // settings.value 返回值是一个QVariant任意类型
settings.endGroup();
}
Widget::~Widget()
{
QSettings settings("configuration.ini", QSettings::IniFormat);
// 三个属性 key, val(), 父对象 - QVariant 是可以转换成任意类型
settings.beginGroup("test1");
settings.setValue("val1", ui->rEdit->text());
settings.endGroup();
delete ui;
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 小技巧 - 把读取配置文件放到构造里面,写配置文件放到析构里面这样就可以启动程序还原上次的配置关闭程序就可以保存当前配置
/*
会在程序的运行的根目录创建一个名为configuration后缀为ini 的文件 configuration.ini
configuration.ini
[section]
key = val
*/
// 配置文件 名、格式
QSettings settings("configuration.ini", QSettings::IniFormat);
// 如没有重复key需要区分可以省却2行代码
settings.beginGroup("test1");
ui->wEdit->setText(settings.value("val1").toString()); // settings.value 返回值是一个QVariant任意类型
settings.endGroup();
}
Widget::~Widget()
{
QSettings settings("configuration.ini", QSettings::IniFormat);
// 三个属性 key, val(), 父对象 - QVariant 是可以转换成任意类型
settings.beginGroup("test1");
settings.setValue("val1", ui->rEdit->text());
settings.endGroup();
delete ui;
}
widget.h
// 默认新创建 - 只添加了一个头文件
#include <QSettings>
ui窗口
在上面输入数字后关闭程序再次运行就会在下面输入框中显示