一、案例功能简介
此案例使用Qt5.12.4(Qt Creater4.9.1)建立,案例功能如下:
(1)用户可以通过界面输入相关参数,并导出为Json文件;
(2)用户可以导入Json文件,文件中相关参数展示在界面上。
附带项目工程链接于文章最后(无需积分O(∩_∩)O哈哈)。
二、相关功能实现简述
(1)导出:
a.准备数据:获取界面参数->放入QJsonObject->通过QJsondocument转为Json格式数据,存入QByteArry备用;
b.写入文件:使用QFiledialog、QFile将数据写入文件。
相关导出功能代码 如下:
//creat object
QJsonObject obj;
obj.insert("Name",ui->textName->toPlainText());
obj.insert("Age",ui->doubleAge->value());
obj.insert("Height",ui->doubleHeight->value());
obj.insert("Weight",ui->doubleWeight->value());
QJsonDocument document;
document.setObject(obj);
QByteArray arraydata;
arraydata = document.toJson(QJsonDocument::Indented);
QFileDialog dialog;
QString filePath = QCoreApplication::applicationDirPath();
QString filename=dialog.getSaveFileName(this,"Save File",filePath,"Json File(*.json)");
if(filename.isEmpty())
{
return;
}
QFile file(filename);
if(!file.open(QIODevice::WriteOnly))
{
QMessageBox::warning(this,"file error","no json file name");
}
else
{
file.write(arraydata);
file.close();
}
导出的json文件如下:
(2)导入:
a.读入文件:使用QFiledialog、QFile将数据读入程序QByteArry备用。
b.处理数据并显式:数据通过QJsonDocument转为QJsonObject,根据关键字获取数据,并显式。
相关导入功能代码如下:
QFileDialog dialog;
QString filepath=QCoreApplication::applicationDirPath();
QString filename=dialog.getOpenFileName(this,"Import Json File",filepath,"Json File(*.json)");
if(filename.isEmpty())
{
return;
}
QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::warning(this,"Import error","No file can be read");
}
else
{
QByteArray arraydata=file.readAll();
QJsonParseError jsonerror;
QJsonDocument document=QJsonDocument::fromJson(arraydata,&jsonerror);
if(jsonerror.error==QJsonParseError::NoError)
{
if(document.isObject())
{
QJsonObject obj= document.object();
if(obj.contains("Name"))
{
QJsonValue namevalue = obj.value("Name");
if(namevalue.isString())
{
ui->textName->setText(namevalue.toString());
}
}
if(obj.contains("Age"))
{
QJsonValue agevalue=obj.value("Age");
if(agevalue.isDouble())
{
ui->doubleAge->setValue(agevalue.toDouble());
}
}
if(obj.contains("Height"))
{
QJsonValue heivalue=obj.value("Height");
if(heivalue.isDouble())
{
ui->doubleHeight->setValue(heivalue.toDouble());
}
}
if(obj.contains("Weight"))
{
QJsonValue weivalue=obj.value("Weight");
if(weivalue.isDouble())
{
ui->doubleWeight->setValue(weivalue.toDouble());
}
}
}
}
}
导入的Json文件及相关显式如下:
项目链接如下(无需积分):
https://download.csdn.net/download/ta14125879/77333355