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");
相关推荐
Infedium21 小时前
Qt嵌入式开发核心亮点:线程安全硬件交互技术
开发语言·qt
秋田君1 天前
QT_QInputDialog类输入对话框
开发语言·qt
秋田君2 天前
QT_QFontDialog类字体对话框
开发语言·qt
mabing9932 天前
Qt QMessageBox、QDialogButtonBox中英文翻译动态切换
开发语言·qt
秋田君2 天前
QT_QColorDialog颜色对话框
java·数据库·qt
秋田君2 天前
QT_QT布局常用类QSplitter窗口分割类与QDockWidget窗口停靠类
开发语言·数据库·qt
Lhan.zzZ2 天前
深入理解 windeployqt:混合 C++/Qt 项目的打包指南
开发语言·c++·qt
Lhan.zzZ2 天前
QML 开发中的“陷阱”:动态模型更新时,ComboBox 索引为何总是失效?
开发语言·qt
咯哦哦哦哦2 天前
qt creator x86交叉编译arm 配置
开发语言·qt
秋田君2 天前
QT_QT布局常用类QStackedWidget与QLayout类
开发语言·qt