深入Qt--ini文件读写

深入Qt–ini文件读写

INI文件是Initialization File的缩写,即初始化文件,主要用来保存程序经常用到的一些配置参数。在Qt中可以使用QSetting类来实现ini文件的读取和写入。

1.ini文件格式

ini文件主要有节(section)、键(key)、键值(value)部分组成。

节 (section) 用方括号括起来,单独占一行,例如:
[section]
键(key)又名属性(property),单独占一行用等号连接键名和键值,例如:
name=value

2.对Qt QSetting类进行封装

2.1 头文件:iniutils.h

#ifndef INIUTILS_H
#define INIUTILS_H
#include 

/**
 * @brief IniUtils
 * 不支持中文
 */
namespace IniUtils {
    /**
     * @brief writeConfig 写单个数据
     * @param file
     * @param group
     * @param key
     * @param val
     * @return
     */
    int writeConfig(QString file, QString group,QString key, QString val);

    /**
     * @brief readConfig 读单个数据
     * @param file
     * @param group
     * @param key
     * @param val
     * @return
     */
    QString readConfig(QString file, QString group,QString key);
    /**
     * @brief writeArrayConfig 写数组数据
     * @param file
     * @param group
     * @param key
     * @param val
     * @return
     */
    int writeArrayConfig(QString file, QString group, QString key, QList val);
    
    /**
     * @brief readArrayConfig 读数组数据
     * @param file
     * @param group
     * @param key
     * @return
     */
    QList readArrayConfig(QString file, QString group, QString key);
}
#endif // CONFIGINFO_H

2.2源文件iniutils.cpp

#include 
#include 
#include 
#include "iniutils.h"

int IniUtils::writeConfig( QString file, QString group, QString key, QString val)
{
    if(file.isEmpty() || file.isNull())
    {
        return -1;
    }
    QSettings* mset = new QSettings(file, QSettings::IniFormat);
    mset->setIniCodec(QTextCodec::codecForName("UTF-8"));
    mset->beginGroup(group);
    mset->setValue(key, val);
    mset->endGroup();
    return 0;
}

QString IniUtils::readConfig(QString file, QString group, QString key)
{
    if(file.isEmpty() || file.isNull())
    {
        return "";
    }
    QSettings* mset = new QSettings(file, QSettings::IniFormat);
    mset->setIniCodec(QTextCodec::codecForName("UTF-8"));
    QString mdir = "";
    mset->beginGroup(group);
    mdir = mset->value(key, "").toString();
    mset->endGroup();
    return mdir;
}
/**
 * @brief writeArrayConfig 写数组数据
 * @param file
 * @param group
 * @param key
 * @param val
 * @return
 */
int IniUtils::writeArrayConfig(QString file, QString group, QString key, QList val)
{
    if(file.isEmpty() || file.isNull())
    {
        return -1;
    }

    QSettings* mset = new QSettings(file, QSettings::IniFormat);
    mset->setIniCodec("UTF-8");
    mset->beginGroup(group);
    mset->beginWriteArray("array");

    for(int i = 0; i < val.size(); i++)
    {
        mset->setArrayIndex(i);
        mset->setValue(key, val.at(i));
    }
    mset->endArray();
    mset->endGroup();
    return 0;
}

/**
 * @brief readArrayConfig 读数组数据
 * @param file
 * @param group
 * @param key
 * @return
 */
QList IniUtils::readArrayConfig(QString file, QString group, QString key)
{
    QList mdir;
    mdir.clear();
    if(file.isEmpty() || file.isNull())
    {
        return mdir;
    }
    QSettings* mset = new QSettings(file, QSettings::IniFormat);
    mset->setIniCodec("UTF-8");
    mset->beginGroup(group);
    
    int size = 0;    

    size = mset->beginReadArray("array");
    for(int i = 0; i < size; i ++)
    {
        mset->setArrayIndex(i);
        mdir.append(mset->value(key, "").toString());
    }
    mset->endArray();
    mset->endGroup();
    return mdir;
}

你可能感兴趣的:(深入Qt,qt,ini)