首页 > 技术文章 > 软件参数的设置记忆

kylin-170 2020-09-18 10:17 原文

class Config
{
public:
    Config(QString filename);
    ~Config();
    void setValue(QString node, QString key, QVariant value);//设置
    QVariant getValue(QString node, QString key);//查询值
    bool contains(QString node, QString key);//查询是否存在(node,key)
    QStringList getGroupChilds(QString node);
    QStringList getGroupChilds();
    void removeGroup(QString node);
private:
    QString m_filename;
    QSettings *m_setting;
};
config.h
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::setValue(QString node, QString key, QVariant value)
{
    m_setting->setValue(QString("/%1/%2").arg(node).arg(key), value);
}

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

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

QStringList Config::getGroupChilds(QString node)
{
    m_setting->beginGroup(node);
    QStringList list = m_setting->childKeys();
    m_setting->endGroup();
    return list;
}

QStringList Config::getGroupChilds()
{
    return m_setting->childGroups();
}

void Config::removeGroup(QString node)
{
    m_setting->remove(node);
}
config.c

节点相当于组

推荐阅读