QSettings保存、读取配置文件

基本用法:

  • 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)] 文件夹中
    在这里插入图片描述
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt可以通过QSettings类来读取配置文件。QSettings是一个用于访问和修改应用程序设置和配置的类。它可以读取和写入INI文件格式和注册表格式的配置信息。 首先,需要包含QSettings头文件,并在需要的地方创建QSettings对象。在创建对象时,可以指定配置文件的路径和格式。通常,可以使用应用程序的配置文件保存配置信息。 接下来,可以使用QSettingsvalue()函数读取配置项的值。该函数接受一个字符串参数,表示要获取的配置项的键名,可以使用点分隔符来访问多级配置项。value()函数返回一个QVariant类型的值,可以通过toXXX()函数将其转换为相应的类型,如QString、int、bool等。 如果需要读取整个配置文件的内容,可以使用allKeys()函数获取所有配置项的键名列表,然后遍历列表,逐个读取配置项的值。 在读取配置文件之前,需要确保配置文件存在,可以使用QFile类的exists()函数来判断文件是否存在。 读取配置文件之后,可以根据需要使用配置项的值来进行相应的操作,如在界面中显示配置项的值,设置应用程序的选项等。 最后,使用完配置文件后,需要手动释放QSettings对象,可以使用delete关键字来销毁对象,以释放资源。 综上所述,通过QSettings类,可以方便地读取和管理配置文件中的配置信息。具体的实现方法可以根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值