Qt如何用QSettings读写ini配置文件

27 篇文章 0 订阅

一、ini文件的格式

ini文件的格式如下,主要是由节、键、值来组成。

[section1]   
age=23        
nam=lcm
sex=man

[section2]
age=75
name=lucimer
sex=man

………………
[sectionN] // 节名
键 = 值 
………………
键 = 值

二、ini配置文件的写入

ini文件的读取和写入都是利用到QSettings 类。

/************************方法一***************************/

// 根据ini文件路径新建QSettings类
QSettings  m_IniFile = new QSettings("ini文件的路径", QSettings::IniFormat);

 //通过setValue函数将键值对放在相对于的节下面
m_IniFile->setValue( "节名" + "/" + "键名",  "键对应的值");


/**************************方法二**********************************/

// 根据ini文件路径新建QSettings类
QSettings  m_IniFile = new QSettings("ini文件的路径", QSettings::IniFormat);

m_IniFile ->beginGroup("节名");     // 设置当前节名,代表以下的操作都是在这个节中

m_IniFile->setValue( "键名",  "键对应的值"); // 因为上面设置了节了,这里不在需要把节名写上去

m_IniFile.endGroup();                   // 结束当前节的操作

三、ini配置文件的读取

ini文件的读取和写入都是利用到QSettings 类。

//通过Value函数将节下相对应的键值读取出来
QString value = m_IniFile->Value( "节名" + "/" + "键名").toString;

// 同样,ini文件的读取也和写入一样有两种办法,参考ini文件的写入即可。

四、Qt用QSettings读写.ini配置文件简单例子

ui界面

/**************************inifilelearn.h***************/

#ifndef INIFILELEARN_H
#define INIFILELEARN_H

#include <QWidget>
#include <QSettings>
#include <QtDebug>
// 使用C中的 头文件
extern "C"
{
    #include <sys/stat.h>   
}
namespace Ui {
class IniFileLearn;
}

class IniFileLearn : public QWidget
{
    Q_OBJECT

public:
    explicit IniFileLearn(QWidget *parent = 0);
    ~IniFileLearn();

private slots:


    void on_putData_clicked();  // 写入数据按键的槽函数

    void on_getData_clicked();  // 读取数据按键的槽函数

private:
    Ui::IniFileLearn *ui;

    QSettings *m_IniFile;
};

#endif // INIFILELEARN_H


/******************inifilelearn.cpp*****************/
#include "inifilelearn.h"
#include "ui_inifilelearn.h"

IniFileLearn::IniFileLearn(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::IniFileLearn)
{
    ui->setupUi(this);

    chdir("/"); // 把当前的工作目录改为根目录下(我的运行环境是在linux上)

    //获取应用程序可执行文件所在的目录
    qDebug()<<"current applicationDirPath: "<<QCoreApplication::applicationDirPath();

    //获取应用程序当前工作目录的绝对路径 (为"/"根目录)
    qDebug()<<"current currentPath: "<<QDir::currentPath(); 

    // 实例化QSettigns,打开或者新建test.ini文件
    m_IniFile = new QSettings("./test.ini", QSettings::IniFormat); 
}

IniFileLearn::~IniFileLearn()
{
    delete ui;
}


/*******************************
//这里用到的是上面所说的方法一
//m_IniFile->setValue( "节名" + "/" + "键名",  "键对应的值");
*******************************/
void IniFileLearn::on_putData_clicked()
{
    m_IniFile->setValue( ui->section->text() + "/" + ui->key->text(), ui->value->text());
}

void IniFileLearn::on_getData_clicked()
{
    ui->value->setText(m_IniFile->value(ui->section->text() + "/" + ui->key->text()).toString());
}

程序运行中

分别在section 、key、value处填入,然后按PutData就能写入ini文件了。
在section 、key中填入,然后按GetData就能在ini文件中查找到节和键相对于的值,并在value处显示出来了。

生成的ini文件

  • 24
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值