封装一个Ini文件
下面是进行简单封装的Ini文件类
#pragma once
#include <QSettings>
#include <QFile>
#include <QDebug>
#include <QTextCodec>
#define ININAME1 "FilePath"
#define ININAME1_LABEL1 "UpJawSelectPath"
#define ININAME1_LABEL2 "DownJawSelectPath"
#define POINTSETTING
class IniFile
{
public:
IniFile(const QString& iniFilePath);
~IniFile();
QString GetIniFilePath()const;
void SetUpJawFilePath(const QString& upJawFilePath);
#ifndef POINTSETTING
QString GetUpJawFilePath() const;
#else
QString GetUpJawFilePath() ;
#endif
void SetDownJawFilePath(const QString& downJawFilePath);
#ifndef POINTSETTING
QString GetDownJawFilePath() const;
#else
QString GetDownJawFilePath();
#endif
private:
QString m_iniFilePath;
#ifndef POINTSETTING
QSettings m_settings;
QString m_upJawFilePath;
QString m_downJawFilePath;
#else
QSettings* m_settings;
#endif
};
#include "IniFile.h"
#ifndef POINTSETTING
IniFile::IniFile(const QString& iniFilePath)
:m_iniFilePath(iniFilePath), m_settings(iniFilePath, QSettings::IniFormat)
{
m_settings.beginGroup(ININAME1);
m_upJawFilePath = m_settings.value(ININAME1_LABEL1).toString();
m_downJawFilePath = m_settings.value(ININAME1_LABEL2).toString();
m_settings.endGroup();
}
#else
IniFile::IniFile(const QString& iniFilePath)
:m_iniFilePath(iniFilePath)
{
QFile file(iniFilePath);
if (!file.exists())
return;
m_settings = new QSettings(iniFilePath, QSettings::IniFormat);
m_settings->setIniCodec(QTextCodec::codecForName("UTF-8"));
}
#endif
IniFile::~IniFile()
{
#ifdef POINTSETTING
delete m_settings;
m_settings = NULL;
#endif
}
QString IniFile::GetIniFilePath() const
{
return m_iniFilePath;
}
void IniFile::SetUpJawFilePath(const QString& upJawFilePath)
{
#ifndef POINTSETTING
if (m_upJawFilePath == upJawFilePath|| upJawFilePath.isEmpty())
return;
m_upJawFilePath = upJawFilePath;
m_settings.beginGroup(ININAME1);
m_settings.setValue(ININAME1_LABEL1, upJawFilePath);
m_settings.endGroup();
#else
if (!m_settings || upJawFilePath.isEmpty())
return;
m_settings->beginGroup(ININAME1);
m_settings->setValue(ININAME1_LABEL1, upJawFilePath);
m_settings->endGroup();
#endif
}
#ifndef POINTSETTING
QString IniFile::GetUpJawFilePath() const
{
return m_upJawFilePath;
}
#else
QString IniFile::GetUpJawFilePath()
{
if (!m_settings)
return QString("");
m_settings->beginGroup(ININAME1);
QString upJawFilePath = m_settings->value(ININAME1_LABEL1).toString();
m_settings->endGroup();
return upJawFilePath;
}
#endif
void IniFile::SetDownJawFilePath(const QString& downJawFilePath)
{
#ifndef POINTSETTING
if (m_downJawFilePath == downJawFilePath || downJawFilePath.isEmpty())
return;
m_downJawFilePath = downJawFilePath;
m_settings.beginGroup(ININAME1);
m_settings.setValue(ININAME1_LABEL2, downJawFilePath);
m_settings.endGroup();
#else
if (!m_settings || downJawFilePath.isEmpty())
return;
m_settings->beginGroup(ININAME1);
m_settings->setValue(ININAME1_LABEL2, downJawFilePath);
m_settings->endGroup();
#endif
}
#ifndef POINTSETTING
QString IniFile::GetDownJawFilePath() const
{
return m_downJawFilePath;
}
#else
QString IniFile::GetDownJawFilePath()
{
if (!m_settings)
return QString("");
m_settings->beginGroup(ININAME1);
QString downJawFilePath = m_settings->value(ININAME1_LABEL2).toString();
m_settings->endGroup();
return downJawFilePath;
}
#endif
使用:
QString path = QApplication::applicationDirPath() + "/config.ini";
IniFile ini(path);
QString upJawPath = ini.GetUpJawFilePath();
QString downJawPath = ini.GetDownJawFilePath();
ini.SetDownJawFilePath(path);
ini.SetUpJawFilePath(path);
参考博客:
QT之Ini文件的封装