QT读写INI文件

一、前言

工作中需要写个配置文件,用最简单的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;
}

运行结果

在这里插入图片描述
这样一个简单的读写就完成了,需要添加到界面上自行设计即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值