其他分享
首页 > 其他分享> > Qt配置系统之保存功能

Qt配置系统之保存功能

作者:互联网

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!" ;
        }
        
    }

}

标签:Qt,配置,sysServiceManager,保存,sys,_-,file,qDebug
来源: https://blog.csdn.net/Toyangtoosimple/article/details/118634201