QT中,读取ini配置文件的封装类

前言

每次都使用QSeting去读取和写入,感觉还是麻烦,于是自己封装了一个类。

源码

managerIniFile.h

cpp 复制代码
#ifndef MANAGERINIFILE_H
#define MANAGERINIFILE_H
#include <QString>
#include <QDebug>
#include <QSettings>
#include <QCoreApplication>

/**
 * @brief 配置文件管理类
 */
class ManagerIniFile
{
public:
    ManagerIniFile();
    void SetIniPath(QString strIniFileName);
    void WriteSetting(QString strGroup, QString strValueName,QString strValue);
    QString ReadSetting(QString strGroup, QString strValueName, QString defaultStr = QString(""));

private:
    QString   defaultStrIniFileName;
    QString   strIniFileName;
    QSettings *m_settings;

};

#endif // MANAGERINIFILE_H

// 使用案例:
// QString strIniPath = QCoreApplication::applicationDirPath();
// strIniPath += "/";
// strIniPath += "config.ini";
// ManagerIniFile info;
// 可省:info.SetIniPath(strIniPath);

managerIniFile.cpp

cpp 复制代码
#include "managerIniFile.h"

ManagerIniFile::ManagerIniFile()//:m_settings(defaultStrIniFileName,QSettings::IniFormat)
{
    defaultStrIniFileName = QCoreApplication::applicationDirPath() + "/" + "config.ini";
    strIniFileName = defaultStrIniFileName;
    m_settings = new QSettings(defaultStrIniFileName, QSettings::IniFormat);
}

void ManagerIniFile::SetIniPath(QString strIniFileName)
{
    m_settings->setUserIniPath(strIniFileName);
}

void ManagerIniFile::WriteSetting(QString strGroup, QString strValueName,QString strValue)
{
    // qDebug()<<"save ini file";
    m_settings->beginGroup(strGroup);
    m_settings->setValue(strValueName,strValue);
    m_settings->endGroup();
}

QString ManagerIniFile::ReadSetting(QString strGroup, QString strValueName, QString defaultStr)
{
    QString str = QString("%1/%2").arg(strGroup,strValueName);

    if(!(m_settings == nullptr))delete m_settings;
    m_settings = new QSettings(defaultStrIniFileName, QSettings::IniFormat);
    QString res = m_settings->value(str).toString();

    if(res==QString(""))
        return defaultStr;
    return res;

}

使用案例

  1. 默认配置文件是config.ini,可以手动更改:

// 使用案例:

QString strIniPath = QCoreApplication::applicationDirPath();

strIniPath += "/";

strIniPath += "config.ini";

ManagerIniFile info;

可省:info.SetIniPath(strIniPath);

  1. 读取:
cpp 复制代码
ManagerIniFile  iniManager;

QString tmp = iniManager.ReadSetting("VIDEOPARA1",tr("SHOWCTRL"));

QString tmp = iniManager.ReadSetting("VIDEOPARA1",tr("SHOWCTRL"),QString::number(1)).toUInt();
  1. 写入:
cpp 复制代码
ManagerIniFile  iniManager;

iniManager.WriteSetting("VIDEOPARA1",tr("SHOWCTRL"),"2");
相关推荐
我真不会起名字啊2 小时前
“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?
开发语言·qt
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
牵牛老人3 小时前
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
数据库·qt·pdf
水瓶丫头站住3 小时前
Qt的QStackedWidget样式设置
开发语言·qt
慕诗客5 小时前
QT基于Gstreamer采集的简单示例
开发语言·qt
Blasit5 小时前
C++ Qt建立一个HTTP服务器
服务器·开发语言·c++·qt·http
@hdd10 小时前
深入解析Qt事件循环
qt
zhencon-com15 小时前
如何使用qt开发一个xml发票浏览器,实现按发票样式显示
xml·c++·经验分享·python·qt·学习·金融
_GR20 小时前
Qt开发④Qt常用控件_上_QWdget属性+按钮类控件
开发语言·c++·qt
东方忘忧1 天前
QT自定义扫描控件,支持任意方位拖动和拖动扫描范围。
开发语言·qt