博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt读写Json格式配置文件
阅读量:6245 次
发布时间:2019-06-22

本文共 2117 字,大约阅读时间需要 7 分钟。

 头文件Config.h

#pragma once#include 
class Config{public: Config(const QString &fileName); ~Config(); bool open(const QString &fileName); void sync(); void write(const QString &key, const QVariant& value); QString readString(const QString &key, const QString &default = ""); bool readBool(const QString &key, bool default = false); int readInt(const QString &key, int default = 0);private: QString m_fileName; QVariantMap m_cache;};

源文件Config.cpp

#include "Config.h"#include 
#include
#include
Config::Config(const QString &fileName) : m_fileName(fileName){ open(fileName);}Config::~Config(){ sync();}bool Config::open(const QString &fileName){ QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { return false; } QByteArray allData = file.readAll(); file.close(); QJsonParseError jsonError; QJsonDocument jsonDoc = QJsonDocument::fromJson(allData, &jsonError); if (jsonError.error != QJsonParseError::NoError) { return false; } QJsonObject root = jsonDoc.object(); m_cache = root.toVariantMap(); return true;}void Config::sync(){ QJsonObject root = QJsonObject::fromVariantMap(m_cache); QJsonDocument jsonDoc(root); QByteArray data = jsonDoc.toJson(QJsonDocument::Compact); QFile file(m_fileName); if (file.open(QIODevice::WriteOnly)) { file.write(data); file.close(); }}void Config::write(const QString &key, const QVariant &value){ m_cache.insert(key, value);}QString Config::readString(const QString &key, const QString &default){ if (m_cache.contains(key)) { return m_cache.value(key).toString(); } return default;}bool Config::readBool(const QString &key, bool default){ if (m_cache.contains(key)) { return m_cache.value(key).toBool(); } return default;}int Config::readInt(const QString &key, int default){ if (m_cache.contains(key)) { return m_cache.value(key).toInt(); } return default;}

 

转载于:https://www.cnblogs.com/dengyg0710/p/10836890.html

你可能感兴趣的文章
cisco交换机IP/MAC***防范
查看>>
8、Python —— 输入输出
查看>>
我的友情链接
查看>>
[转]Shell 统计PV, UV ,独立IP
查看>>
Flash网页甘特图控件
查看>>
yii2 csrf验证以及token管理
查看>>
一步一步理解Java企业级应用的可扩展性
查看>>
存储非结构化数据之利器-minio
查看>>
苹果个人开发者账号申请
查看>>
SSH双机互信及错误解决大全
查看>>
adb命令详解
查看>>
php网页如何运作
查看>>
学艺不精 - 记一次性能问题排查
查看>>
Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装
查看>>
awk工具
查看>>
设计模式-代理模式(Proxy)
查看>>
Windows Sharepoint services 3.0部署体验
查看>>
[分享] Mac 键盘和Pc键盘对照表
查看>>
windows下批量杀死进程
查看>>
第七章:面向对象(三)
查看>>