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");
相关推荐
qq_397562318 小时前
QT工程 , 生成别的电脑运行的exe程序
嵌入式硬件·qt
轩情吖8 小时前
Qt的窗口
开发语言·c++·qt·窗口·工具栏·桌面级开发
凯子坚持 c8 小时前
Qt常用控件指南(8)
开发语言·数据库·qt
深蓝海拓9 小时前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
深蓝海拓11 小时前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
从此不归路14 小时前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc
无小道16 小时前
QT——简介
qt
xmRao17 小时前
Qt+FFmpeg 实现音频重采样
qt·ffmpeg·音视频
专注echarts研发20年17 小时前
如何实现 QLabel 的 Click 事件?Qt 富文本超链接优雅方案
开发语言·qt
小小码农Come on17 小时前
QT控件之QTabWidget使用
开发语言·qt