QT INI配置文件读写

ConfigUtil.h文件

#ifndef CONFIGUTILS_H
#define CONFIGUTILS_H

#include <QString>

class ConfigUtils
{
private:
    ConfigUtils(){}
    ~ConfigUtils(){}

public:
    // 写字符配置值
    static void setCfgStr(QString sFileName,
                          QString sSecName,
                          QString sKey,
                          QString sValue);
    // 读取配置字符串
    static QString getCfgStr(QString sFileName,
                             QString sSecName,
                             QString sKey,
                             QString sDefault = "");
    // 获取配置项目
    static int getCfgList(QString sFileName,
                          QString sSecName,
                          QString sKeyName,
                          QStringList &strings);
    // 获取配置项目
    static void writeCfgList(QString sFileName,
                             QString sSecName,
                             QString sKeyName,
                             QStringList &strings);

    // 写字符配置整数值
    static void setCfgInt(QString sFileName,
                          QString sSecName,
                          QString sKey,
                          int iValue);
    // 读取配置整数值
    static int getCfgInt(QString sFileName,
                         QString sSecName,
                         QString sKey,
                         int iDefault = 0);

    // 写字符配置单精度浮点值
    static void setCfgFloat(QString sFileName,
                            QString sSecName,
                            QString sKey,
                            float fValue);
    // 读取配置单精度浮点值
    static float getCfgFloat(QString sFileName,
                             QString sSecName,
                             QString sKey,
                             float fDefault = 0.0);

    // 写字符配置双精度浮点值
    static void setCfgDouble(QString sFileName,
                             QString sSecName,
                             QString sKey,
                             double dValue);
    // 读取配置双精度浮点值
    static double getCfgDouble(QString sFileName,
                               QString sSecName,
                               QString sKey,
                               double dDefault = 0.0);
};

#endif // CONFIGUTILS_H

ConfigUtil.cpp文件

#include "ConfigUtils.h"
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QMessageBox>
#include <QSettings>
#include <QString>

/**
 * @brief ConfigUtils::setCfgStr 写字符配置值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param sValue 设置值
 */
void ConfigUtils::setCfgStr(QString sFileName,
                            QString sSecName,
                            QString sKey,
                            QString sValue)
{
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    settings.setValue(sKey, sValue);
    settings.endGroup();
}

/**
 * @brief ConfigUtils::getCfgStr 读取配置字符串
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param sDefault 缺省值
 * @return 键值对应的字符串
 */
QString ConfigUtils::getCfgStr(QString sFileName,
                               QString sSecName,
                               QString sKey,
                               QString sDefault)
{
    QString retStr = QLatin1String("");
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    retStr = settings.value(sKey, sDefault).toString();
    settings.endGroup();
    return retStr.trimmed();
}

/**
 * @brief ConfigUtils::getCfgList 获取配置项目
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKeyName 键名称
 * @param strings 读取配置的数组值
 * @return 读取的个数
 */
int ConfigUtils::getCfgList(QString sFileName,
                            QString sSecName,
                            QString sKeyName,
                            QStringList &strings)
{
    QSettings settings(sFileName, QSettings::IniFormat);

  settings.beginGroup(sSecName);

    int iCount = settings.value(sKeyName + "-count").toInt();
    QString strValue;
    int iRet = 0;
    //qDebug()<< "iCount:" << iCount;
    for(int i = 0; i < iCount; i ++)
    {
        strValue = settings.value(sKeyName + "-" + QString::number(i + 1)).toString();
        strValue = strValue.trimmed();
        //qDebug()<< sKeyName + "-" + QString::number(i + 1) <<"=" << QString::fromLocal8Bit(strValue.toLatin1());
        if((strValue.length() != 0) && (strings.indexOf(strValue) < 0))
        {
            strings << strValue;
            iRet ++;
        }
    }

  settings.endGroup();

  return iRet;
}

/**
 * @brief ConfigUtils::writeCfgList 设置配置项目
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKeyName 键名称
 * @param strings 写入配置的数组值
 */
void ConfigUtils::writeCfgList(QString sFileName,
                               QString sSecName,
                               QString sKeyName,
                               QStringList &strings)
{
    QSettings settings(sFileName, QSettings::IniFormat);

  settings.beginGroup(sSecName);

  settings.setValue(sKeyName + "-count", strings.count());
  for (int i = 0; i < strings.count(); i++)
    settings.setValue(sKeyName + "-" + QString::number(i + 1), strings.at(i));

  settings.endGroup();
}

/**
 * @brief ConfigUtils::setCfgInt 写整数配置值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param iValue 设置值
 */
void ConfigUtils::setCfgInt(QString sFileName,
                            QString sSecName,
                            QString sKey,
                            int iValue)
{
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    settings.setValue(sKey, QString::number(iValue));
    settings.endGroup();
}

/**
 * @brief ConfigUtils::getCfgInt 读取整数配置值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param iDefault 缺省值
 * @return 键值对应的字符串
 */
int ConfigUtils::getCfgInt(QString sFileName,
                           QString sSecName,
                           QString sKey,
                           int iDefault)
{
    int val = iDefault;
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    val = settings.value(sKey, iDefault).toInt();
    settings.endGroup();
    return val;
}

/**
 * @brief ConfigUtils::setCfgFloat 写字符配置单精度浮点值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param fValue 设置值
 */
void ConfigUtils::setCfgFloat(QString sFileName,
                              QString sSecName,
                              QString sKey,
                              float fValue)
{
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    settings.setValue(sKey, QString::number(fValue));
    settings.endGroup();
}

/**
 * @brief ConfigUtils::getCfgFloat 读取配置单精度浮点值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param fDefault 缺省值
 * @return 键值对应的字符串
 */
float ConfigUtils::getCfgFloat(QString sFileName,
                               QString sSecName,
                               QString sKey,
                               float fDefault)
{
    float val = fDefault;
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    val = settings.value(sKey, fDefault).toFloat();
    settings.endGroup();
    return val;
}

/**
 * @brief ConfigUtils::setCfgDouble 写字符配置单精度浮点值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param dValue 设置值
 */
void ConfigUtils::setCfgDouble(QString sFileName,
                              QString sSecName,
                              QString sKey,
                              double dValue)
{
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    settings.setValue(sKey, QString::asprintf("%9.9lf", dValue));
    settings.endGroup();
}

/**
 * @brief ConfigUtils::getCfgDouble 读取配置单精度浮点值
 * @param sFileName ini文件名称
 * @param sSecName 组名称
 * @param sKey 键名称
 * @param dDefault 缺省值
 * @return 键值对应的字符串
 */
double ConfigUtils::getCfgDouble(QString sFileName,
                               QString sSecName,
                               QString sKey,
                               double dDefault)
{
    double val = dDefault;
    QSettings settings(sFileName, QSettings::IniFormat);
    settings.beginGroup(sSecName);
    val = settings.value(sKey, dDefault).toDouble();
    settings.endGroup();
    return val;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值