我有一个.json文档,其中包含要从程序中重新加载的数据。看起来像这样:
{
"0 - Demanda": 100,
"0.1 - Ref. Temporal Demanda": "Mensual",
"1 - Tiempo de Suministro": 2,
"1.1 - Ref. Temporal Ts": "Diario",
"2 - Coste de Posesion": 20,
"2.1 - Ref. Temporal Cp": "Semanal",
"2.2 - Tipo de Coste de Posesion": "Dependiente",
"3 - Coste Unitario de Emision": 20,
"4 - Precio Unitario de compra": 30
}
要获取此数据,我分别填充了QLineEdit,QComboBox和QCheckBox,现在我想读取使用以下代码生成的文件:
void WResultados_Basico::on_pushButtonGuardar_clicked()
{
QJsonObject recordObject;
recordObject.insert("0 - Demanda", QJsonValue::fromVariant(d.demanda_original)); //d.anything is class with data
recordObject.insert("0.1 - Ref. Temporal Demanda", QJsonValue::fromVariant(d.ref_demanda));
recordObject.insert("1 - Tiempo de Suministro", QJsonValue::fromVariant(d.Ts_original));
recordObject.insert("1.1 - Ref. Temporal Ts", QJsonValue::fromVariant(d.ref_Ts));
recordObject.insert("2 - Coste de Posesion", QJsonValue::fromVariant(d.Cp_original));
recordObject.insert("2.1 - Ref. Temporal Cp", QJsonValue::fromVariant(d.ref_Cp));
recordObject.insert("2.2 - Tipo de Coste de Posesion", QJsonValue::fromVariant(d.Tipo_Cp));
recordObject.insert("3 - Coste Unitario de Emision", QJsonValue::fromVariant(d.Ce));
recordObject.insert("4 - Precio Unitario de compra", QJsonValue::fromVariant(d.PrecioUCompra));
QJsonDocument doc(recordObject);
qDebug() << doc.toJson();
QByteArray ba=doc.toJson();
QFile fid;
fid.setFileName("DatosBasico.json");
if (fid.open(QIODevice::WriteOnly))
{
fid.write(ba);
fid.close();
}
}
所以,我的目标是用我读取的数据填充相应的ComboBox等。也许像这样的事情可能有用,但是我不知道如何为每个单独的值分配变量:
{
QFile fid;
QByteArray ba;
fid.open("DatosBasico.json"::ReadOnly);
ba=fid.readAll();
doc.fromByteArray(ba);
fid.close();
}
感谢您的帮助和耐心
答案 0 :(得分:0)
我最终这样做了,它可以正常工作,看起来很恐怖,可能超级无效,但是...却可以工作:)
void Basico::on_pushButtonCargar_clicked()
{
QFile file("DatosBasico.json");
//Leer el archivoo que tiene el Json
if(!file.open(QFile::ReadOnly)){
qDebug()<< "Error, No se puede abrir el fichero.";
return;
}
QJsonDocument jsonDoc = QJsonDocument::fromJson(file.readAll());
d.demanda = jsonDoc.object().value("0 - Demanda").toDouble();
d.ref_demanda = jsonDoc.object().value("0.1 - Ref. Temporal Demanda").toString();
d.Ts = jsonDoc.object().value("1 - Tiempo de Suministro").toDouble();
d.ref_Ts = jsonDoc.object().value("1.1 - Ref. Temporal Ts").toString();
d.Cp = jsonDoc.object().value("2 - Coste de Posesion").toDouble();
d.ref_Cp = jsonDoc.object().value("2.1 - Ref. Temporal Cp").toString();
d.Tipo_Cp = jsonDoc.object().value("2.2 - Tipo de Coste de Posesion").toString();
d.Ce = jsonDoc.object().value("3 - Coste Unitario de Emision").toDouble();
d.PrecioUCompra = jsonDoc.object().value("4 - Precio Unitario de compra").toDouble();
file.close();
QString demanda_cargada=QString::number(d.demanda);
ui->lineEditDemanda->setText(demanda_cargada);
ui->comboBoxDemanda->setCurrentText(d.ref_demanda);
QString Ts_cargado=QString::number(d.Ts);
ui->lineEditTS->setText(Ts_cargado);
ui->comboBoxTS->setCurrentText(d.ref_Ts);
QString Cp_cargado=QString::number(d.Cp);
ui->lineEditCP->setText(Cp_cargado);
ui->comboBoxCP->setCurrentText(d.ref_Cp);
if (d.Tipo_Cp == "Dependiente")
{
ui->checkBoxDependiente->click();
}
if (d.Tipo_Cp == "Independiente")
{
ui->checkBoxIndependiente->click();
}
QString CE_cargado=QString::number(d.Ce);
ui->lineEditCe->setText(CE_cargado);
QString PUC_cargado=QString::number(d.PrecioUCompra);
ui->lineEditPrecioUCompra->setText(PUC_cargado);
}