Qt 对 ini文件、json、xml 进行操作
一、INI 文件操作
1、概述
1、基本介绍
-
INI 文件是 Initialization File 的缩写,即初始化文件,通常存放的是一个程序的初始化信息,是 Windows 的系统配置文件所采用的存储格式,统管 windows 的各项配置。
-
ini 文件的后缀名不一定是.ini ,也可以是.cfg 、.conf 或者是.tx* 。
-
INI 文件由多个节(section)组成,每个节都有多个键值对(key-value pair)。键值对:由
一个键(key
)和一个值(value)
组成,中间使用等号(=)连接。
2、INI 文件的结构很简单,它通常由以下几个部分组成:
- 节名称:以方括号
([ ])
括起来的字符串,用于标识一个节。 - 键名称:一个字符串,用于标识一个键。
- 键值:一个字符串,表示键对应的值。
3、在 INI 文件中,可以使用分号(;)或者井号(#)来添加注释,这些符号后面的内容将被解析器忽略,不被视为配置项或者值。
; This is a comment in INI file
# This is another comment
[Section1]
setting1 = value1 ; This is a comment for setting1
setting2 = value2 # This is another comment for setting2
在上面的示例中,“This is a comment in INI file”和“This is another comment”是两个注释,它们都不会被解析器读取。在 [Section1] 下面的 setting1 和 setting2 配置项后面也添加了注释,这些注释会被解析器忽略。
4、以下是一个简单的 INI 文件示例:
- 这个 INI 文件包含两个节,一个是 database,另一个是 logging。
- 在 database 节中,有 5 个键值对,分别是 host、port、username、password 和 database。
- 在 logging 节中,有 2 个键值对,分别是 level 和 file。
[database]
host = localhost
port = 3306
username = myuser
password = mypass
database = mydb
[logging]
level = info
file = log.txt
INI 文件通常用于存储应用程序或操作系统的配置信息,例如数据库连接配置、日志记录配置等。由于 INI 文件的结构简单,易于阅读和编辑,因此被广泛应用。
2、Qt 如何读取 INI 文件
在 Qt 中,可以使用 QSettings 类来读取和写入 INI 文件。
以下是一个简单的示例代码,展示了如何读取 INI 文件中的值:
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSettings settings("config.ini", QSettings::IniFormat);
QString value = settings.value("section1/key1", "default value").toString();
qDebug() << "Value: " << value;
return a.exec();
}
- 在这个例子中,首先创建了一个 QSettings 对象,并指定了要读取的 INI 文件的路径和格式。
- 然后通过
value 方法
,读取 INI 文件中section1
节点下的key1
键的值。 - 如果该键不存在,则返回默认值 “default value”。最后将读取到的值输出到控制台。
3、group 相关 API 介绍
QSettings 类中的 beginGroup、endGroup 和 group 函数用于处理设置中的分组信息,具体如下:
- beginGroup(group: str) 函数:表示开始一个分组,它接受一个字符串类型的参数 group,表示分组的名字,分组的名称可以使用类似路径的方式来组织,例如:“UI/Font”。在一个分组内设置的键值对都会存储在这个分组内。
- endGroup() 函数:表示结束当前的分组,一般在调用 beginGroup() 函数之后会调用此函数
- group(group: str) 函数:表示返回一个 QSettings 对象,该对象是在指定的 group 下打开的,可以用它来读取或修改指定分组下的键值对信息。
通过使用 beginGroup() 和 endGroup() 函数,可以将键值对按照分组的方式来组织,便于管理和维护,同时也方便了程序的开发和维护。
以下是一个简单的使用例子:
假设有一个名为 “settings.ini”
的 INI 配置文件,内容如下:
[General]
username=John Doe
language=en_US
[Network]
port=8080
我们可以使用 QSettings 类来读取和写入 INI 文件中的值。下面是一个例子,演示了如何使用 beginGroup、endGroup 和 group 来读取和写入值:
#include <QtCore/QCoreApplication>
#include <QtCore/QSettings>
#include <QtCore/QString>
#include <QtCore/QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// 读取 INI 文件中的值
QSettings settings("settings.ini", QSettings::IniFormat);
QString username = settings.value("General/username").toString();
QString language = settings.value("General/language").toString();
int port = settings.value("Network/port").toInt();
// 打印读取到的值
qDebug() << "username:" << username;
qDebug() << "language:" << language;
qDebug() << "port:" << port;
// 写入 INI 文件中的值
settings.beginGroup("General");
settings.setValue("username", "Alice");
settings.setValue("language", "zh_CN");
settings.endGroup();
settings.beginGroup("Network");
settings.setValue("port", 80);
settings.endGroup();
// 读取已修改的值
username = settings.value("General/username").toString();
language = settings.value("General/language").toString();
port = settings.value("Network/port").toInt();
// 打印已修改的值
qDebug() << "modified username:" << username;
qDebug() << "modified language:" << language;
qDebug() << "modified port:" << port;
return app.exec();
}
在上面的例子中,我们使用 beginGroup 和 endGroup 来设置组,从而将值组织在一起。例如,我们在读取和写入 General 组的值时,使用 beginGroup(“General”) 和 endGroup() 来标识 General 组的起始和结束位置。这样可以让代码更加清晰易懂,也更加易于维护。
更多推荐
所有评论(0)