2025-04-18 09:30:35 +00:00
|
|
|
#include <cmath>
|
|
|
|
|
#include <QJsonArray>
|
|
|
|
|
#include <QJsonObject>
|
|
|
|
|
#include <QFile>
|
|
|
|
|
#include <QJsonDocument>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include <QFileDialog>
|
|
|
|
|
|
2025-04-16 07:38:25 +00:00
|
|
|
#include "enthalpydatacorrectionform.h"
|
|
|
|
|
#include "ui_enthalpydatacorrectionform.h"
|
|
|
|
|
|
|
|
|
|
EnthalpyDataCorrectionForm::EnthalpyDataCorrectionForm(QWidget *parent) :
|
|
|
|
|
QWidget(parent),
|
|
|
|
|
ui(new Ui::EnthalpyDataCorrectionForm)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
2025-04-18 09:30:35 +00:00
|
|
|
setWindowTitle("热焓校正参数编辑");
|
2025-04-16 07:38:25 +00:00
|
|
|
|
2025-04-18 09:30:35 +00:00
|
|
|
// ui->lineEditTheoryIn->setText("28.6");
|
|
|
|
|
// ui->lineEditTheorySn->setText("60.5");
|
|
|
|
|
// ui->lineEditTheoryBi->setText("53.3");
|
2025-04-16 07:38:25 +00:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EnthalpyDataCorrectionForm::~EnthalpyDataCorrectionForm()
|
|
|
|
|
{
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EnthalpyDataCorrectionForm::on_pushButtonSave_clicked()
|
|
|
|
|
{
|
2025-04-18 09:30:35 +00:00
|
|
|
if(ui->checkBoxC6H12->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempC6H12->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryC6H12->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasC6H12->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxHg->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempHg->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryHg->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasHg->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxC6H5COOH->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempC6H5COOH->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryC6H5COOH->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasC6H5COOH->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxIn->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempIn->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryIn->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasIn->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxSn->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempSn->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheorySn->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasSn->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxBi->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempBi->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryBi->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasBi->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxKC1O3->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempKC1O3->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryKC1O3->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasKC103->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxPb->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempPb->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryPb->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasPb->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxKNO3->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempKNO3->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryKNO3->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasKNO3->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxZn->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempZn->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryZn->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasZn->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxAg2SO4->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempAg2SO4->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryAg2SO4->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasAg2SO4->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxCsCl->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempCsC1->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryCsC1->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasCsCl->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxSiO2->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempSiO2->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheorySiO2->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasSiO2->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxK2SO4->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempK2SO4->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryK2SO4->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasK2SO4->text().toDouble();
|
2025-04-16 07:38:25 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxK2CrO4->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempK2CrO4->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryK2CrO4->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasK2CrO4->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxBaCO3->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempBaCO3->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryBaCO3->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasBaCO3->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxAg->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempAg->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryAg->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasAg->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
if(ui->checkBoxCu->isChecked()){
|
2025-05-06 09:26:23 +00:00
|
|
|
double temperature = ui->labelTempCu->text().toDouble();
|
|
|
|
|
double theory = ui->lineEditTheoryCu->text().toDouble();
|
|
|
|
|
double measure = ui->lineEditMeasCu->text().toDouble();
|
2025-04-18 09:30:35 +00:00
|
|
|
|
2025-05-06 09:26:23 +00:00
|
|
|
_theoryDataVtr.push_back({temperature,theory/measure});
|
2025-04-18 09:30:35 +00:00
|
|
|
}
|
|
|
|
|
//
|
|
|
|
|
saveJson();
|
2025-04-16 07:38:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EnthalpyDataCorrectionForm::on_pushButtonExit_clicked()
|
|
|
|
|
{
|
|
|
|
|
hide();
|
|
|
|
|
}
|
2025-04-18 09:30:35 +00:00
|
|
|
|
|
|
|
|
void EnthalpyDataCorrectionForm::saveJson()
|
|
|
|
|
{
|
|
|
|
|
// 创建一个 QJsonArray 来存储数据
|
|
|
|
|
QJsonArray jsonArray;
|
|
|
|
|
for (const TheoryData &data : _theoryDataVtr) {
|
|
|
|
|
QJsonObject jsonObj;
|
2025-05-06 09:26:23 +00:00
|
|
|
jsonObj["temperature"] = data.temperature;
|
2025-04-18 09:30:35 +00:00
|
|
|
jsonObj["rate"] = data.rate;
|
|
|
|
|
jsonArray.append(jsonObj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 创建一个 QJsonDocument 并设置根数组
|
|
|
|
|
QJsonDocument doc(jsonArray);
|
|
|
|
|
|
|
|
|
|
// 打开保存文件对话框,让用户选择保存位置
|
|
|
|
|
QString fileName = QFileDialog::getSaveFileName(nullptr, "保存 JSON 文件",
|
|
|
|
|
"new.json", "JSON Files (*.json)");
|
|
|
|
|
if (fileName.isEmpty()) {
|
|
|
|
|
qDebug() << "用户取消了操作";
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 确保文件名以 .json 扩展名结尾
|
|
|
|
|
if (!fileName.endsWith(".json")) {
|
|
|
|
|
fileName.append(".json");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 写入 JSON 数据到文件
|
|
|
|
|
QFile file(fileName);
|
|
|
|
|
if (!file.open(QIODevice::WriteOnly)) {
|
|
|
|
|
qDebug() << "无法打开文件进行写入:" << file.errorString();
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
file.write(doc.toJson(QJsonDocument::Indented)); // 以格式化的方式写入 JSON 数据
|
|
|
|
|
file.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|