Qt配置系统之保存功能
1.前言
许多软件都含有保存功能,如wps,office等办公软件。对于网关配置系统软件来说,开发一个保存功能也是很有必要的。接着之前博文的内容,本篇文章主要记录工程管理中保存功能的实现。之前的一篇博文见Qt配置系统之新建工程功能https://blog.csdn.net/Toyangtoosimple/article/details/118546104。
2.开发环境
开发工具:Qt Creator5.14.2;
操作系统:Windows10;
编译方式:Mingw编译。
目录
3.保存功能实现思路
根据本网关配置系统的实际开发,在实现保存功能的过程中,具体思路如下。用户首次使用系统时,会创建临时工程。如果不是首次打开,会读取上次打开的工程文件,并将其加载出来。具体实现见第四点代码部分中的注释说明。
4.保存功能实现代码
// 保存
void MainWindow::on_action_save_triggered()
{
//判断G_Project_path是否为空,如果为空,说明是读取临时工程。否则读取系统文件中保存的上次打开的工程
if(G_Project_path==""){
qDebug() <<"G_Project_path为空";
//获取临时工程文件路径
QString allpath = + "./tempProject.json" ;
QDir tempdir(allpath);
QString path=tempdir.absolutePath();
qDebug()<<"path"<<path;
QFile file( allpath ) ;
//以读写方式打开临时工程文件
if( file.open( QIODevice::ReadWrite) )
{
QJsonDocument jsonDoc;
QJsonObject jsonObj;
//本系统文件中存储了工程名称,工程版本号,工程路径等参数
//每保存一次工程,工程版本号增加1
sysServiceManager_->sys_project_version=sysServiceManager_->sys_project_version+1;
//将工程配置参数存入一个json对象中
sysServiceManager_->write(jsonObj,*sysServiceManager_);
jsonDoc.setObject(jsonObj);
file.resize(0);
//写入json文件
file.write(jsonDoc.toJson());
file.close();
qDebug() <<allpath+"open ok";
}
else {
qDebug() << allpath + " open error!" ;
file.close();
}
}
else
{
qDebug() <<"G_Project_path不为空";
QFile file(G_Project_path) ;
if( file.open( QIODevice::ReadWrite|QIODevice::Text))
{
QJsonDocument jsonDoc;
QJsonObject jsonObj;
sysServiceManager_->sys_project_version=sysServiceManager_->sys_project_version+1;
sysServiceManager_->write(jsonObj,*sysServiceManager_);
jsonDoc.setObject(jsonObj);
file.resize(0);//清空文件
file.write(jsonDoc.toJson());
file.close();
qDebug() <<G_Project_path+"open ok";
//改变系统配置json文件的项目路径
QFile sys_file("./system_config.json");
sys_file.open(QIODevice::ReadWrite);
QString jsonfile=sys_file.readAll();
QJsonParseError jsonParseError;
QJsonDocument sys_doc=QJsonDocument::fromJson(jsonfile.toUtf8(),&jsonParseError);
if(!(jsonParseError.error==QJsonParseError::NoError))
{
QMessageBox::about(NULL,"提示","系统配置文件错误");
return;
}
QJsonObject sys_json=sys_doc.object();
sys_json["sys_project_path"]=sysServiceManager_->sys_project_path;
sys_doc.setObject(sys_json);
sys_file.resize(0);//清空文件
sys_file.write(sys_doc.toJson());
sys_file.close();
qDebug() <<"系统配置json文件的项目路径更改成功";
}
else
{
file.close();
qDebug() <<G_Project_path + " open error!" ;
}
}
}