一、前言
工作中需要写个配置文件,用最简单的INI方式写个demo
二、INI文件单例类
INI文件内容
[CameraParameters]
value1=Camera1
value2=63.12345678
value3=63.099998474121094
value4=63
value5=0
采用单例对象进行全局的调用
IniInstance.h
#pragma once
#include<QObject>
//相机参数
struct IniParameter
{
QString value1;
double value2;
float value3;
int value4;
char value5;
};
class IniInstance:QObject
{
Q_OBJECT
public:
static IniInstance *getIniInstance();
static IniInstance *iniInstance;
static void Release();
//ini文件读写操作
bool LoadIniFile(QString file_path);
bool SaveIniFile();
IniParameter GetCameraPara();
private:
IniInstance();
QString filepath;
IniParameter inicamerapara;
};
#define INI_Config IniInstance::getIniInstance()
IniInstance.cpp
#include "IniInstance.h"
#include<QSettings>
IniInstance* IniInstance::iniInstance = nullptr;
//初始化对象
IniInstance::IniInstance()
{
}
//读取INI文件
bool IniInstance::LoadIniFile(QString file_path)
{
filepath = file_path;
QSettings* configIni = new QSettings(file_path, QSettings::IniFormat);
bool ok;
inicamerapara.value1 = configIni->value("CameraParameters/value1").toString();
inicamerapara.value2 = configIni->value("CameraParameters/value2").toDouble(&ok);
inicamerapara.value3 = configIni->value("CameraParameters/value3").toFloat(&ok);
inicamerapara.value4 = configIni->value("CameraParameters/value4").toInt(&ok);
inicamerapara.value5 = configIni->value("CameraParameters/value5").toChar().toLatin1();
if (!ok)
{
return false;
}
return true;
}
//保存INI文件
bool IniInstance::SaveIniFile()
{
QSettings* configIni = new QSettings(filepath, QSettings::IniFormat);
configIni->setValue("CameraParameters/value1", inicamerapara.value1);
configIni->setValue("CameraParameters/value2", inicamerapara.value2+1);
configIni->setValue("CameraParameters/value3", inicamerapara.value3+1.0);
configIni->setValue("CameraParameters/value4", inicamerapara.value4+1);
configIni->setValue("CameraParameters/value5", inicamerapara.value5);
return true;
}
//获取相机参数
IniParameter IniInstance::GetCameraPara()
{
return inicamerapara;
}
IniInstance* IniInstance::getIniInstance()
{
if (iniInstance == NULL)
{
iniInstance = new IniInstance();
}
return iniInstance;
}
void IniInstance::Release()
{
if (iniInstance != NULL)
{
delete iniInstance;
iniInstance = NULL;
}
return;
}
运行结果
这样一个简单的读写就完成了,需要添加到界面上自行设计即可