1. 目标
客户端程序经常需要读取/保存配置,而配置项的内容各种各样,且可能存在多个配置文件,所以我们写一个通用的配置类,具备以下功能特性:
-
json格式
-
读取/保存配置文件
-
统一访问接口
-
线程安全
2. 实现
创建一个configuration模块,包含一个Configuration类:
configuration
- configuration.pri
- configuration.h
- configuration.cpp
2.1 json格式
在Qt程序中,一般使用QVariantMap/QVariantList来匹配json文档结构,而QFile读取文件返回的数据为QByteArray类型,Qt提供了QJsonDocument等类来实现QVariant和QByteArray之间的转换,我们封装一下:
// configuration.h
class Configuration {
...
private:
QVariant json2variant(const QByteArray &json);
QByteArray variant2json(const QVariant &variant);
}
// configuration.cpp
QVariant Configuration::json2variant(const QByteArray &json) {
QJsonParseError parseError;
QJsonDocument doc = QJsonDocument::fromJson(json, &parseError);
if (QJsonParseError::NoError != parseError.error) {
return QVariant();
}
return doc.toVariant();
}
QByteArray Configuration::variant2json(const QVariant &variant) {
QJsonDocument doc = QJsonDocument::fromVariant(variant)

最低0.47元/天 解锁文章
1731

被折叠的 条评论
为什么被折叠?



