QSettings使用

头文件

 

#include <QSettings> 

一、最简单操作

QSettings *minifile;     //声明

minifile = new QSettings("./config1.ini", QSettings::IniFormat);//实例化
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省                           

minifile->setValue("/para1/first", "1111111");                 //写
                //  /节/键    ,值
qDebug() <<"111"<< minifile->value("/para1/first");            //读

效果:

1、config.ini程序自动创建,不用手动创建

2、ini文件介绍

.ini 文件是Initialization File的缩写,即初始化文件。

除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。相当于一个轻量级数据库。
ini文件格式

INI文件由节、键、值组成。

[section]

参数(键=值)

name=value

例如:

[Section1 Name]

KeyName1=value1

KeyName2=value2

...

[Section2 Name]

KeyName21=value21

KeyName22=value22

其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。

注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

二、类封装管理

1、声明config.h:

#ifndef CONFIG_H
#define CONFIG_H
#include <QVariant>
#include <QSettings>

class Config
{
public:
    Config(QString qstrfilename = "");   //构建
    virtual ~Config(void);               //解析
    void Set(QString,QString,QVariant);  //增,改
    QVariant Get(QString,QString);       //取值
    void clear();                        //清除所有
private:
    QString m_qstrFileName;
    QSettings *m_psetting;
};


#endif // CONFIG_H

 2、config.c

#include "config.h"
#include <QtCore/QtCore>
#include <QDebug>

Config::Config(QString qstrfilename)
{
    if (qstrfilename.isEmpty())
    {   //无文件名,默认Config.ini
        m_qstrFileName = QCoreApplication::applicationDirPath() + "/Config.ini";
    }
    else
    {
        m_qstrFileName = qstrfilename;
    }

    m_psetting = new QSettings(m_qstrFileName, QSettings::IniFormat);
  //  qDebug() << m_qstrFileName;
}
Config::~Config()
{
    delete m_psetting;
    m_psetting = 0;
}
void Config::Set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
{  
    m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);
}

QVariant Config::Get(QString qstrnodename,QString qstrkeyname)
{
    QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
    return qvar;
}

void Config::clear()
{
    m_psetting->clear();
}

3、使用时添加头文件"config.h"

void MainWindow::saveConfig()   //存
{ 
    Config().clear();          //清除
    Config().Set("serialconfig","BaudRate",ui->BaudRateBox->currentIndex());
    Config().Set("serialconfig","DataBit",ui->DataBitsBox->currentIndex());
    Config().Set("serialconfig","Parity",ui->ParityBox->currentIndex());
    Config().Set("serialconfig","stopbit",ui->stopbitBox->currentIndex());
    Config().Set("serialconfig","flow",ui->flowBox->currentIndex());
  for(int i=0;i<ui->txcomboBox->count();i++){
        Config().Set("sendData",QString::number(i),ui->txcomboBox->itemText(i));
    }
  for (int j = 0; j < ui->listWidget->count();j++){
         Config().Set("fixedData",QString::number(j),ui->listWidget->item(j)->text());
    }

}

void  MainWindow::readConfig()
{
           //读取          ui->BaudRateBox->setCurrentIndex(Config().Get("serialconfig","BaudRate").toInt());
    ui->DataBitsBox->setCurrentIndex(Config().Get("serialconfig","DataBit").toInt());
    ui->ParityBox->setCurrentIndex(Config().Get("serialconfig","Parity").toInt());
    ui->stopbitBox->setCurrentIndex(Config().Get("serialconfig","stopbit").toInt());
    ui->flowBox->setCurrentIndex(Config().Get("serialconfig","flow").toInt());
    QString buff;
    for(int i = 0;i < MAXITEMCOUNT;i++){
        buff = Config().Get("sendData",QString::number(i)).toString();
        if(buff.isEmpty()){
           break;
        }else{
          ui->txcomboBox->addItem(buff);
        }
    }
    for(int j = 0;j < MAXITEMCOUNT;j++){
        buff = Config().Get("fixedData",QString::number(j)).toString();
        if(buff.isEmpty()){
           break;
        }else{
          ui->listWidget->addItem(buff);
        }
    }
}

效果:

参考:       https://blog.csdn.net/qiurisuixiang/article/details/7760828

                                 https://blog.csdn.net/qq_18286031/article/details/78663507

QString的arg方法:https://blog.csdn.net/xu1129005165/article/details/82377908

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值