基本用法:
- QSettings API基于QVariant,通过键值对的形式保存参数。
- QSettings在使用时需要声明公司或组织名称以及产品名称,简单点说其实就是先声明 [ 结点名字 ],在结点下再声明 [ 键名 ] 以及对应的 [ 值 ] 。
// 配置文件以ini的形式保存
QString fileName = QCoreApplication::applicationDirPath() + "/Config.ini";
// 实例化QSettings对象
QSettings *setting = new QSettings(fileName, QSettings::IniFormat);
// 写参数,以键值对[keyName : valueName]的形式保存在[fileName / nodeName]中
setting->setValue(QString("/%1/%2").arg(nodeName).arg(keyName), valueName);
QString key, value;
// 读key
key = setting->value(QString("/%1/%2").arg(nodeName).arg(keyName));
// 读value
value = setting->value(QString("/%1/%2").arg(nodeName).arg(valueName));
用户注册DEMO:
- UI界面
- 代码
// 设计一个QSettings类
class Config : public QSettings
{
public:
// 打开参数文件
Config(QString filename = "");
~Config();
// 写参数
void SetInit(QString nodeName, // 结点名
QString keyName, // 键名
QVariant valueName); // 值
// 读参数,返回值
QVariant GetInit(QString nodeName, // 结点名
QString keyName, // 键名
QString valueName); // 值名
private:
// 文件名
QString fileName;
// QSettings对象
QSettings *setting;
};
#include "config.h"
Config::Config(QString filename)
{
if(filename.isEmpty())
{
fileName = QCoreApplication::applicationDirPath() + "/Config.ini";
}
else
{
fileName = filename;
}
setting = new QSettings(fileName, QSettings::IniFormat);
}
Config::~Config()
{
delete setting;
setting = NULL;
}
// 写参数,以键值对[keyName : valueName]的形式保存在[fileName / nodeName]中
void Config::SetInit(QString nodeName, QString keyName, QVariant valueName)
{
setting->setValue(QString("/%1/%2").arg(nodeName).arg(keyName), valueName);
}
// 读参数
QVariant Config::GetInit(QString nodeName, QString userName, QString userPaswd)
{
QVariant name = setting->value(QString("/%1/%2").arg(nodeName).arg(userName));
QVariant paswd = setting->value(QString("/%1/%2").arg(nodeName).arg(userPaswd));
QString ret = QString("%1\n%2").arg(name.toString()).arg(paswd.toString());
return ret;
}
- 界面代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 点击 [注册] 按钮
void MainWindow::on_btnRegister_clicked()
{
QString setName = ui->regName->text();
QString setPaswd = ui->regPaswd->text();
if(!setName.isEmpty() && !setPaswd.isEmpty())
{
Config setting;
setting.SetInit("Login", "User Name", setName);
setting.SetInit("Login", "User Paswd", setPaswd);
}
}
// 点击 [查询信息] 按钮
void MainWindow::on_btnSearch_clicked()
{
Config setting;
QVariant ret = setting.GetInit("Login", "User Name", "User Paswd");
ui->disp->setText(ret.toString());
}
- Config.ini
文件保存在 [ build-xxx/Debug(Release)] 文件夹中