qt中创建普通c++类

头文件
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
