Qt文件和json

qt中创建普通c++类

image

头文件

1#ifndef OPERATION_H 2#define OPERATION_H 3 4#include <QFile> 5// 默认配置文件路径 6const QString FilePath = "./config.json"; 7 8typedef struct FileConfig { 9 QString ip; 10 QString port; 11 QString username; 12 QString password; 13 QString filepath; 14 bool is_save_pwd; 15}fileConfig; 16// 判断目录是否存在 17bool isFile(const QString file=FilePath); 18 19// 饿汉模式单例 20class FileOperation 21{ 22public: 23 void writeConfig(fileConfig config); 24 bool readConif(fileConfig* config); 25 26 static FileOperation* getInstance() 27 { 28 return pSingleton; 29 } 30private: 31 static FileOperation *pSingleton; 32 FileOperation(){} 33 ~FileOperation(){} 34 FileOperation(FileOperation&){} 35}; 36 37#endif // OPERATION_H

源文件

1// 在头文件初始化会出现重复定义? 2FileOperation* FileOperation::pSingleton = new FileOperation; 3 4void FileOperation::writeConfig(fileConfig config) 5{ 6 // 保存写入数据 7 QJsonObject obj; 8 obj.insert("IP", config.ip); 9 obj.insert("PORT", config.port); 10 obj.insert("USERNAME", config.username); 11 obj.insert("PASSWORD", config.password); 12 obj.insert("FILEPATH", FilePath); 13 obj.insert("IS_SAVE", config.is_save_pwd); 14 QJsonDocument doc(obj); 15 QByteArray json = doc.toJson(); 16 QFile file(FilePath); 17 file.open(QIODevice::WriteOnly | QIODevice::Text); 18 file.write(json.data(), json.size()); 19 file.close(); 20} 21 22bool FileOperation::readConif(fileConfig* config) 23{ 24 if(isFile()) 25 { 26 QFile file(FilePath); 27 file.open(QIODevice::ReadOnly | QIODevice::Text); 28 QByteArray data = file.readAll(); 29 file.close(); 30 QJsonDocument doc = QJsonDocument::fromJson(data); 31 QJsonObject obj = doc.object(); 32 config->ip = obj.value("IP").toString(); 33 config->port = obj.value("PORT").toString(); 34 config->username = obj.value("USERNAME").toString(); 35 config->password = obj.value("PASSWORD").toString(); 36 config->filepath = obj.value("FILEPATH").toString(); 37 config->is_save_pwd = obj.value("IS_SAVE").toBool(); 38 return true; 39 } 40 return false; 41} 42 43 44 45bool isFile(const QString file) 46{ 47 return QFile::exists(file); 48}

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

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

点赞
收藏

评论区

加载中...

相关推荐

Qt使用QSocket做tcp简单客户端

首先要在工程文件.por中添加network添加新文件在头文件中导入qtcpsocket之后定义成员函数用于发送和接收数据Qt封装的socket使用的是信号槽监听接收到的数据所以需要添加监听使用的传输格式报文长度8字节字符串base64转码的json报文头文件cppifndefTCPSOCKETHdefineTCPSOCKETHinclude<Q

Qt制作简单的无边框登陆窗口

使用qt做简单的登录窗口环境:win10Qt5创建项目:选择Widget类勾选ui界面因为我是用的默认类名所以类名是Widget以下是Widget.hcifndefWIDGETHdefineWIDGETHinclude<QWidgetnamespaceUiclassWidget;classWidget:publicQWidg

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593

C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c

Qt5安装及组件选择(Qt 5.12.0)

组件选择如下图所示,安装Qt时有选择组件这一步,全部安装未免太占磁盘控件,只需安装我们所需要的组件即可。接下来就分析分析各个组件的作用及含义。!(https://oscimg.oschina.net/oscnet/f428e1aad0ebfcc43108b36f5f67a03de85.png)“Qt5.12.0”节点下面是Qt

Linux查看GPU信息和使用情况

1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代