Qt文件和json

隔壁老王 等级 1119 1 0

qt中创建普通c++类

Qt文件和json

头文件

#ifndef OPERATION_H
#define OPERATION_H

#include <QFile>
// 默认配置文件路径
const QString FilePath = "./config.json";

typedef struct FileConfig {
    QString ip;
    QString port;
    QString username;
    QString password;
    QString filepath;
    bool    is_save_pwd;
}fileConfig;
// 判断目录是否存在
bool isFile(const QString file=FilePath);

// 饿汉模式单例
class FileOperation
{
public:
    void writeConfig(fileConfig config);
    bool readConif(fileConfig* config);

    static FileOperation* getInstance()
    {
        return pSingleton;
    }
private:
    static FileOperation *pSingleton;
    FileOperation(){}
    ~FileOperation(){}
    FileOperation(FileOperation&){}
};

#endif // OPERATION_H

源文件

// 在头文件初始化会出现重复定义?
FileOperation* FileOperation::pSingleton = new FileOperation;

void FileOperation::writeConfig(fileConfig config)
{
    // 保存写入数据
    QJsonObject obj;
    obj.insert("IP", config.ip);
    obj.insert("PORT", config.port);
    obj.insert("USERNAME", config.username);
    obj.insert("PASSWORD", config.password);
    obj.insert("FILEPATH", FilePath);
    obj.insert("IS_SAVE", config.is_save_pwd);
    QJsonDocument doc(obj);
    QByteArray json = doc.toJson();
    QFile file(FilePath);
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    file.write(json.data(), json.size());
    file.close();
}

bool FileOperation::readConif(fileConfig* config)
{
    if(isFile())
    {
        QFile file(FilePath);
        file.open(QIODevice::ReadOnly | QIODevice::Text);
        QByteArray data = file.readAll();
        file.close();
        QJsonDocument doc = QJsonDocument::fromJson(data);
        QJsonObject obj = doc.object();
        config->ip = obj.value("IP").toString();
        config->port = obj.value("PORT").toString();
        config->username = obj.value("USERNAME").toString();
        config->password = obj.value("PASSWORD").toString();
        config->filepath = obj.value("FILEPATH").toString();
        config->is_save_pwd = obj.value("IS_SAVE").toBool();
        return true;
    }
    return false;
}



bool isFile(const QString file)
{
    return QFile::exists(file);
}

完整代码在码云上持续更新中。。

https://gitee.com/YiZhiLuGuoDeXiaoMaNong/personnel-management

收藏
评论区

相关推荐

Python中JSON的基本使用_Just do it !
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumps、dump、loads、load。 dump和dumps dump和dumps对python对象进行序列化。将一个Python对象
你不知道的JSON Schema
1、JSON?JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。具有简洁、可读性高、支持广泛的特点。下面我们用JSON描述了一个商品的基本信息,包含了JSON的一些基本数据的类型 。json{ "productId": 1, "
MySQL8.0 json 使用 类型 查询 函数_denglei的博客
一,对记录的操作1.创建有json字段的表 创建表CREATE TABLE t_json(id INT PRIMARY KEY, sname VARCHAR(20) , info JSON);2.插入记录 插入含有json数组的记录 INSERT INTO t_json(id,sname,info) VAL
Android如何解析json字符串
前言上一篇文章介绍了服务器用Golang如何解析json字符串,今天我们来看看Android客户端是如何解析json字符串的。 正文Golang如何解析post请求中的json字符串(https://www.helloworld.net/p/O917HGeiALU2D)使用java语句如何正确解析json字符串呢?举一个例子,假如我们想从rtc_i
一篇长文带你在python里玩转Json数据
↑一个宝藏公众号,长的好看的人都关注了 Json简介 Json(JavaScript Object Notation) 很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的,它们返回的数据都是Json格式的。这因为Json是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点。用它来进行前后端的数据传输,大
Newtonsoft.Json的使用整理
关于我 引言json是我们在工作中经常用到的一种数据传输格式,开始过程中解析json是我们经常面对的问题。NewtonsoftJson是c的一套json处理封装类,它可以高效,方便地帮助我们处理json。NetonSoftJson提供了完整的使用文档,文档地址如下: NetonSoftJson的不同使用场景 常用方法 序列化和反序列化这应该是我们最常用的俩
一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序
\ 一、简介 Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,今天老猿要介绍的是主流Python图形界面扩展库之一的PyQt。 在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C++可视化开发平台,是一个跨平台的C++图形用户界面应用程序框架(C++ GUI)
关于根据颜色刷选图像内容的问题
在CSDN本人博文《OpenCVPython图像处理:用inRange刷选图像中指定颜色对象案例》(请点击文章底部最下方的“阅读原文”跳转CSDN阅读原文)中介绍了根据颜色刷选图像内容相关的概念及实现,介绍了通过使用inRange在HSV颜色空间中识别制定颜色的图像内容,文中概要介绍了HSV颜色空间中进行制定颜色对象识别的要点,使用的inRange函数的语法
Ubuntu20.04安装、配置、卸载QT5.9.9与QT creator以及第一个编写QT程序
一、下载与安装QT选择qtopensourcelinuxx645.9.9.run,如果是Chrome点击以后没有反应建议换个浏览器尝试,比如Firefox下载完毕开始安装先使用命令改变qt安装包的权限,以便于后续操作bashchmod +x qtopensourcelinuxx645.9.9.run或者bashchmod u+x qtopensourceli
「JS — 操作」更新中
数组中是否存在某值 languagearr.indexOf('XXX') // 不存在返回1,存在返回该值坐标截取字符串圆括号中的内容 languagevar source 'url(XXX)'var res /(.+)?(?:\(|()(.+)(?\)|))/.exec(source)console.log(res[2]) // XXX字符串转json
Qt简单使用表格
接在Qt简单登录后https://www.helloworld.net/p/4enJFnZUQAC8G 添加新文件 使用的组件table weight和 table view头文件c++ifndef MANAGEMENTHdefine MANAGEMENTHinclude <QWidgetinclude <QMouseEventnamespace Ui cl
Qt文件和json
qt中创建普通c++类头文件cppifndef OPERATIONHdefine OPERATIONHinclude <QFile// 默认配置文件路径const QString FilePath "./config.json";typedef struct FileConfig QString ip; QString port; QS
Qt使用QSocket做tcp简单客户端
首先要在工程文件.por中添加network添加新文件在头文件中导入qtcpsocket之后定义成员函数用于发送和接收数据Qt封装的socket使用的是信号槽监听接收到的数据所以需要添加监听使用的传输格式 报文长度8字节字符串 + base64转码的json报文头文件cppifndef TCPSOCKETHdefine TCPSOCKETHinclude<Q
Qt中添加背景图
第一步选择一张背景图下到本地 第二步在qt中点击添加新文件选择图中位置随便起个名字,点击下一步这时项目中多出一个目录选择打开资源编辑器底部添加前缀:注意该前缀是在内部使用图的路径点击添加添加前缀我这里直接使用的/作为前缀再点击添加文件选择需要的图片资源加载进入后1. 使用代码添加背景图cpp// 开启背景设置thissetAutoFillBackground
Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
前言现在我们做项目基本上中大型项目都是选择前后端分离,前后端分离已经成了一个趋势了,所以总这样·我们就要和前端约定统一的api 接口返回json 格式,这样我们需要封装一个统一通用全局 模版api返回格式,下次再写项目时候直接拿来用就可以了 约定JSON格式一般我们和前端约定json格式是这样的json "code": 200, "message