如何在Qt中用Json作为配置文件?一个便捷的Qt JSON配置文件操纵类!
QJSONConfig是我设计的一个JSON配置文件读写类,支持以一种简便的方式存取配置信息,同时采用JSON格式,小巧易读。它还支持嵌套配置信息存取,为复杂信息的管理提供了有效的手段。内部与Qt5或6兼容,适合在Qt应用程序中使用。
目录
获取和使用QJSONConfig
QJSONConfig的基本使用
配置信息的写入
配置信息的读取
配置文件的保存与清除
获取和使用QJSONConfig
获取是非常容易办到的,只需
1 | git clone https://github.com/zxunge/QJSONConfig.git |
然后,你可以将QJSONConfig复制到项目目录中,在源代码中包含qjsonconfig.h即可(记住要添加include路径哦)
QJSONConfig的基本使用
首先我们需要定义一个QJSONConfig对象:
1 | QJSONConfig cfg("cfg.json"); |
构造QJSONConfig时需要传递配置文件的名称。默认的名称是config.json。
接下来,我们需要读写配置内容。但是读者可能会问了,如果是第一次运行应用程序,那么怎么初始化相关配置呢?QJSONConfig已经为我们想好了。它提供了一个empty()用于判断配置是否为空:
1 | if (cfg.empty()) |
配置信息的写入
写入配置信息时,有两种方式。官方推荐的,是采用setValue():
1 | cfg.setValue("key", value); |
这里的value是一个QVariant,具体支持的类型,可以见Variant types,这里列出了一些元类型对应的转换结果,可以作为支持类型的参考。如果没有提供value参数会怎样?key会被初始化成空值。
这里有个嵌套配置信息的使用。有时我们想把某些信息归类到某个东西底下,怎么办呢?使用斜杠:
1 | cfg.setValue("app/name", "auhu"); |
这些信息也会以嵌套形式储存在json文件中。
另一种是使用[]运算符实现读写统一,但它有严重缺陷,感兴趣的读者可自行研究。
配置信息的读取
读取配置信息最佳做法便是使用下标运算符:
1 | QVariant value = cfg["key"]; |
要注意的是,取下标得到的结果是QVariant,必要时需要调用相关toXXX()实现类型转换。
使用getValue()也可达到同样效果:
1 | QVariant value = cfg.getValue("key"); |
嵌套信息的读取,使用斜杠即可。
getValue()第二个参数是默认值,表明当没有key时的返回值。
配置文件的保存与清除
sync()函数用于同步配置信息(这不仅是代码→文件,也是文件→代码):
1 | cfg.sync(); |
clear()则清除所有内容:
1 | cfg.clear(); |
限于时间,更多内容请见仓库里的demo!欢迎issue,和PR!