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");
相关推荐
一叶之秋14123 小时前
QT背景介绍与环境搭建
开发语言·qt
QT 小鲜肉4 小时前
【QT/C++】Qt网络编程进阶:UDP通信和HTTP请求的基本原理和实际应用(超详细)
c语言·网络·c++·笔记·qt·http·udp
四维碎片7 小时前
【Qt】大数据量表格刷新优化--只刷新可见区域
开发语言·qt
一叶之秋14128 小时前
Qt开发初识
开发语言·qt
梵尔纳多10 小时前
ffmpeg 使用滤镜实现播放倍速
c++·qt·ffmpeg
QT 小鲜肉13 小时前
【QT/C++】Qt网络编程进阶:TCP网络编程的基本原理和实际应用(超详细)
c语言·开发语言·网络·c++·qt·学习·tcp/ip
Tony小周1 天前
使用QKeyEvent keyPress(QEvent::KeyPress, key模拟键盘发送事件,会导致主程序卡死
嵌入式硬件·qt
Larry_Yanan1 天前
QML学习笔记(五十)QML与C++交互:QML中单例C++对象
开发语言·c++·笔记·qt·学习·ui·交互
zhmhbest1 天前
Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
开发语言·qt·系统架构
feiyangqingyun1 天前
Qt实时绘制飞行轨迹/移动轨迹实时显示/带旋转角度/平滑移动/效果一级棒/地面站软件开发/无人机管理平台
qt·无人机·集群地面站