Qt读写ini文件

1. 概述

ini 文件是Initialization File的缩写,即初始化文件。很多系统配置使用INI文件,其实INI文件就是简单的文本文件,只不过这种txt文件要遵循一定的INI文件格式。.INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",“.conf ”或者是”.txt"。

2. ini文件结构

INI文件由节、键、值组成。


  [section]

参数(键=值)
  name=value

注解
  注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。

什么是parameters?

ini所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,name和value是由等号“=”隔开。name在等号的左边。

如:

  name = value

什么是sections ?

所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。

section如下所示:

  [section]

什么是comments ?

在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

ini文件示例

; exp ini file
[imgSize]
width=11
height=12

[system]
user=admin
pass=1234
ipaddress=192.167.1.1

[General]
language=中文

3. ini文件的读取、写入

写文件:

// 写入.ini文件
void  writeini(QString filename)
{
	QSettings *settings = new QSettings(filename, QSettings::IniFormat);

	// 设置文件编码,配置文件中使用中文时,这是必须的,否则乱码
	settings->setIniCodec(QTextCodec::codecForName("UTF8"));

	//直接setValue(组/键,值)方式写入
	settings->setValue("/imgSize/width", 11);
	settings->setValue("/imgSize/height", 12);

	//先设置组,然后setValue(键,值)方式写入,效果同上
	settings->beginGroup("system");
	settings->setValue("user", "admin");
	settings->setValue("pass", "1234");
	settings->setValue("ipaddress", "192.167.1.1");
	settings->endGroup();

	// 写入中文字符
	QString value = QString::fromLocal8Bit("中文");
	settings->setValue("language", value);

	delete  settings;
	return;
}

读文件:

// 读取.ini文件
void  readini(QString filename)
{
	QSettings *settings = new QSettings(filename, QSettings::IniFormat);

	//设置文件编码,配置文件中使用中文时,这是必须的,否则乱码
	settings->setIniCodec(QTextCodec::codecForName("UTF8"));

	//按键读取
	int img_width  = settings->value( "imgSize/width").toInt();
	int img_height = settings->value("imgSize/height").toInt();

	QString user	  = settings->value( "/system/user").toString();
	QString pass	  = settings->value("/system/pass").toString();
	QString ipaddress = settings->value("/system/ipaddress").toString();

	QString language = settings->value("language").toString(); //language = "中文"

	//按组读取
	settings->beginGroup("system");						 //锁定一个组
	QStringList keys = settings->allKeys();				 //获取该组所有key
	for (int i = 0; i < keys.count(); ++i)
	{
		QString key = keys[i];
		QString value = settings->value(key).toString(); //直接根据key获取该组下对应key的值
	}

	delete  settings;
	return;
}
  • 9
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值