Qt配置系統之保存功能
1.前言
許多軟體都含有保存功能,如wps,office等辦公軟體,對于網關配置系統軟體來說,開發一個保存功能也是很有必要的,接著之前博文的內容,本篇文章主要記錄工程管理中保存功能的實作,之前的一篇博文見Qt配置系統之新建工程功能https://blog.csdn.net/Toyangtoosimple/article/details/118546104,
2.開發環境
開發工具:Qt Creator5.14.2;
作業系統:Windows10;
編譯方式:Mingw編譯,
目錄
- Qt配置系統之保存功能
- 1.前言
- 2.開發環境
- 3.保存功能實作思路
- 4.保存功能實作代碼
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!" ;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335534.html
標籤:其他
