QSetting使用说明

3 篇文章 0 订阅

前言

客户要求用文本替代sqlite数据库记录以下格式信息,遍历及增删配置

[IP]
1=192.168.0.70
3=192.168.0.111

[PATH]
1=/usr/bin/qtcreator
2=/home/test
           

1.初始化

void Config::initSetting()
{
    QString fileName="config.ini";
    QFile file(fileName);
    if(!file.exists())
    {
        FILE* fp = fopen("config.ini","wb");
        fprintf(fp,"%s","[IP]\n");
        fprintf(fp,"%s","\n");
        fprintf(fp,"%s","[PATH]\n");
        fclose(fp);
    }
    mySetting = new QSettings(fileName,QSettings::IniFormat);	//别漏了QSettings::IniFormat
}

2.增加设置

void Config::addSetting(const QString&section, const QString&left, const QString&right)
{
    mySetting->setValue(QString("/%1/%2").arg(section).arg(left),right);
}

3.删除设置

void Config::removeSetting(const QString&setction, const QString&left)
{
    mySetting->remove(QString("/%1/%2").arg(setction).arg(left));

}

4.遍历键值与值(左值与右值)

enum RL{ LEFT, RIGHT};
enum TYPE{IP,PATH};
QVariant Config::getSetting(TYPE type, RL LOCATION, const QString&section)
{

    mySetting->endGroup();
    if(IP == type)
        mySetting->beginGroup("IP");
    else
        mySetting->beginGroup("PATH");

    if(LEFT == LOCATION)
    {
        auto results = mySetting->childKeys();
        mySetting->endGroup();
        return  results;
    }
    else
    {
        auto keys = mySetting->childKeys();
        if(IP == type)
            for(auto i : keys)
                i.push_front("/IP");
        else
            for(auto i : keys)
                i.push_front("/PATH");
        QStringList results;
        for (auto i : keys)
            results <<mySetting->value(i).toString();
        mySetting->endGroup();
        return QVariant(results);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值