“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第5篇文章,点击查看活动详情”
背景
windows应用程序经常需要用文件保存程序的一些配置,.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式。
什么是ini文件
ini文件全称"initialization",文件后缀名为.ini,
ini 文件格式用于保存相关软件的配置信息。
ini配置文件常用于windows操作系统下的系统配置项或者软件的特性。
ini文件的格式
ini文件主要结构为:
- sections(段)
- keys(properties键)
- values(值)
sections格式:
[section]
a=a
b=b
说明:section用于表示一类的键值对,并且使用"[ ]"符合包围。一个ini文件中可以存在多个section。section之间不可以嵌套。
keys和values格式如下:
name=value
说明:键值对就是ini文件中最基本的元素。采用key=value的形式。一个section下可以有多个key=value。
其他说明:
- 大小写敏感问题:ini文件对大小写不敏感(具体取决于使用的解析库)
- 注释:";"表示注释的开头,分号之后的一行内容都为注释内容
- 空格:需要注意解析库对空格的说明,有些库对空格是不支持空格的。
Qt中操作ini文件
Qt中操作ini文件可以用QSettings来实现。QSettings可以直接访问INI和.plist文件。有时我们希望访问存储在特定文件或注册表路径中的设置。如果希望直接读取INI文件,可以使用QSettings构造函数,该构造函数以文件名作为第一个参数,并将QSettings::IniFormat作为第二个参数传递。例如:
QSettings settings("/home/petra/misc/myapp.ini", QSettings::IniFormat);
然后,就可以使用QSettings对象来读写文件中的设置。
- 首先需要设置用于访问INI文件的编解码器:
settings.setIniCodec("GBK"); //windowns系统用这个,linux系统用UTF_8
- 获取value值:
// 在获取之前需要设置用于访问INI文件的编解码器
QVariant value = settings.value(QString("/%1/%2").arg(sectionName).arg(keyName));
// 可以转化成QString
QString strValue = value.toString();
// 可以转化成int
QString nValue = value.toInt();
- 设置value值:
// 在设置之前需要设置用于访问INI文件的编解码器
QVariant keyValue;
settings.setValue(QString("/%1/%2").arg(sectionName).arg(keyName), keyValue);
- 移除一条数据:
// 在移除之前可以不用设置用于访问INI文件的编解码器
settings.remove(QString("/%1/%2").arg(sectionName).arg(keyName));
上面这些就是一些基本的通过QSettings操作ini文件的方法了。以后如果还有用到其他方法,还会进行补充。