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

本文共 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

你可能感兴趣的文章
OEA体验:查询面板
查看>>
什么是VC维?
查看>>
SuperMap IS.NET自定义Action之兴趣点标注(转)
查看>>
HDOJ-1035 搜索模拟问题[深搜]
查看>>
C 猴子选大王(亚瑟夫环)
查看>>
关于Android中的SlidingMenu中的用法
查看>>
C++杂项
查看>>
判断一个文件被修改(转)
查看>>
《HTTP权威指南》读书笔记:缓存
查看>>
explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二
查看>>
Android操作HTTP实现与服务器通信
查看>>
Dll 导出函数那些破事
查看>>
【Window 7】解决Win7远程桌面无法全屏的方法
查看>>
oracle在schema是什么意思?
查看>>
数据库死锁实例分析及解决方法
查看>>
Hibernate_12_HQL句子
查看>>
Android Fragment---执行Fragment事务
查看>>
The L1 Median (Weber 1909)
查看>>
Git 进阶指南
查看>>
eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
查看>>