一、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配置文件简单例子
/**************************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处显示出来了。