文档章节

QSettings的Json格式支持

tsuibin
 tsuibin
发布于 2015/08/19 11:27
字数 204
阅读 414
收藏 1

一直觉得用QSettings保存配置信息很方便,为了让程序更够更方便的与Web程序和MongoDB,Redis,PostgreSQL等数据库交互,为QSettings 添加了Json格式支持

源码示例:

https://github.com/tsuibin/Json_format_for_QSettings/blob/master/main.cpp

#include <QApplication>
#include <QJsonDocument>
#include <QDebug>
#include <QVariant>
#include <QSettings>

bool readJsonFile(QIODevice &device, QSettings::SettingsMap &map)
{
	bool ret = false;

	QJsonParseError error;
	map = QJsonDocument::fromJson(device.readAll() , &error).toVariant().toMap();

	if( error.error == QJsonParseError::NoError )
		ret = true;

	return ret;
}

bool writeJsonFile(QIODevice &device, const QSettings::SettingsMap &map)
{    
	bool ret = false;

	QJsonDocument jsonDocument = QJsonDocument::fromVariant(QVariant::fromValue(map));
	if ( device.write(jsonDocument.toJson()) != -1 )
		ret = true;

	return ret;
}


int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	const QSettings::Format JsonFormat = QSettings::registerFormat("json", readJsonFile, writeJsonFile);
	QSettings settings(JsonFormat, QSettings::UserScope, "json","cazool");

	QMap<QString, QVariant> cazoolData;
	cazoolData.insert("Address","China");

	cazoolData.insert("age",18);

	cazoolData.insert("Tel","13888888888");
	settings.remove("Tsuibin");


	settings.setValue("Cazool", QVariant::fromValue(cazoolData));

	return a.exec();
}


© 著作权归作者所有

tsuibin

tsuibin

粉丝 20
博文 26
码字总数 4993
作品 0
东城
个人站长
私信 提问
QSettings 自定义格式

转自:http://hi.baidu.com/cyclone/blog/item/1bcb5edfed60d20348540320.html 早就注意到 QSettings 提供了自定义配置文件格式的功能,却一直没怎么看。今天用了一天时间,做了个练习,特此...

长平狐
2013/01/11
457
0
QSettings的编码问题(QTBUG15543、QTBUG19552)

我们在QSettings 与中文 一文中认识了QSettings在Qt4.5中引入的setIniCodec成员函数。 这是一个挺不错的函数,估计解决了不少人的中文(我自己几乎不在里面用中文,感受不是太深)。 这两天看Q...

晨曦之光
2012/05/08
575
0
QSettings使用中出现的问题及正确示例

背景:使用QSettings读写配置文件 示例及需要注意的问题: ①写配置文件 QSettings settings("Option.ini", QSettings::IniFormat); settings.beginGroup("Config");//此句不可缺少 settings......

qt_plus
2016/06/21
151
0
QT解决QSettings读取ini文件中文乱码

以前读取ini文件中文乱码网上查找方法,使用自定义QSettings,但是在频繁读写的时候可能会发生错误;后来专门做个工具给用户修改配置。 偶然在网上看到网友发的方法,方法非常简单: QSetti...

道根
2018/01/18
974
0
QtAda 3.1.0 发布

QtAda 是 QT GUI应用开发库的 Ada 语言移植版本。 该版本新增对 QtOpenGL、QDir、QFileInfo、QProcessEnvironment、QSettings和 QUrl类的支持等等。...

鉴客
2010/10/11
912
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
51分钟前
114
7
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部