qt如何记忆用户设置

QQ等应用程序可以记住用户输入的用户名和密码,以及一系列用户的设置,从而方便了用户的使用。

在我们自己开发的程序中,也可以很方便地实现上述功能。
通过QSettings,我们不需要对编写读写文件的代码。

我们先看一下其在程序同级目录默认生成的文件中的数据格式。

[setting]
debug=true
os=mac

[user]
password=***
username=江俊广

其中[setting]是一个node,其下的debug是一个key,true是一个value。

的代码对QSettings进一步封装。
config.h

#include 
#include 

//将程序配置信息和用户信息持久化到硬盘
class Config
{
public:
    Config(QString filename="");
    ~Config();
    void set(QString node, QString key, QVariant value);//设置
    QVariant get(QString node, QString key);//查询值
    bool contails(QString node, QString key);//查询是否存在(node,key)
private:
    QString m_filename;
    QSettings *m_setting;
};

config.cpp

#include "config.h"
#include 
Config::Config(QString filename)
{
    if(filename.isEmpty()){
        m_filename = QCoreApplication::applicationDirPath() + "/Config.ini";
    }else{
        m_filename = filename;
    }
    m_setting = new QSettings(m_filename, QSettings::IniFormat);
    m_setting->setIniCodec("UTF-8");
}

Config::~Config()
{
    delete m_setting;
}

void Config::set(QString node, QString key, QVariant value)
{
    m_setting->setValue(QString("/%1/%2").arg(node).arg(key), value);
}

QVariant Config::get(QString node, QString key)
{
    QVariant variant = m_setting->value(QString("/%1/%2").arg(node).arg(key));
    return variant;
}

bool Config::contails(QString node, QString key)
{
    return m_setting->contains(QString("/%1/%2").arg(node).arg(key));
}

除了用于记忆用户设置外,通过QSetting也可以进行将程序的参数写入文件,而不是写死在代码里。这样在进行调试的时候,可以减少编译的次数。

你可能感兴趣的:(qt如何记忆用户设置)