From 02af6f39d9baf77855e8a29987cfa8ac7290230d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B5=B7?= Date: Mon, 18 May 2026 11:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E9=87=8F=E5=88=86?= =?UTF-8?q?=E6=9E=90=E9=A1=B9=E7=9B=AE=E5=88=9B=E5=BB=BA=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=B5=8B=E9=87=8F=E5=8F=82=E6=95=B0=E5=92=8C=E8=83=BD=E9=87=8F?= =?UTF-8?q?=E5=88=BB=E5=BA=A6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NewMeasureAnalysisDlg.cpp | 49 ++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/NewMeasureAnalysisDlg.cpp b/src/NewMeasureAnalysisDlg.cpp index 359da10..16fbc66 100644 --- a/src/NewMeasureAnalysisDlg.cpp +++ b/src/NewMeasureAnalysisDlg.cpp @@ -73,6 +73,36 @@ void NewMeasureAnalysisDlg::initialization() ui->lineEdit_filename->setProperty("data_file_path", filename); }); + // 遍历可执行文件目录中configure/DeviceParams目录下的测量设备参数文件 + const QString& device_params_dir_path = QDir(qApp->applicationDirPath()).filePath("configure/DeviceParams"); + QDir device_params_dir(device_params_dir_path); + if (!device_params_dir.exists(device_params_dir_path)) { + return; + } + QList ms_cfg_basenames = device_params_dir.entryList(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks, QDir::Time); + for (const QString& ms_cfg_basename : ms_cfg_basenames) { + const QString& ms_cfg_filename = device_params_dir.filePath(ms_cfg_basename); + QFileInfo ms_cfg_file_info(ms_cfg_filename); + if ("mscfg" == ms_cfg_file_info.suffix()) { + ui->comboBox_measure_param->addItem(ms_cfg_file_info.baseName(), ms_cfg_file_info.absoluteFilePath()); + } + } + + // 遍历可执行文件目录中configure/EnergyScale目录下的能量刻度文件 + const QString& energy_scale_dir_path = QDir(qApp->applicationDirPath()).filePath("configure/EnergyScale"); + QDir energy_scale_dir(energy_scale_dir_path); + if (!energy_scale_dir.exists(energy_scale_dir_path)) { + return; + } + QList energy_scale_basenames = energy_scale_dir.entryList(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks, QDir::Time); + for (const QString& energy_scale_basename : energy_scale_basenames) { + const QString& energy_scale_filename = energy_scale_dir.filePath(energy_scale_basename); + QFileInfo energy_scale_file_info(energy_scale_filename); + if ("json" == energy_scale_file_info.suffix()) { + ui->comboBox_energy_scale->addItem(energy_scale_file_info.baseName(), energy_scale_file_info.absoluteFilePath()); + } + } + ui->btn_ok->setEnabled(false); auto turnStackPageBtnState = [this](){ int last_stack_index = ui->stackedWidget->count() - 1; @@ -117,7 +147,7 @@ void NewMeasureAnalysisDlg::initialization() void NewMeasureAnalysisDlg::newProject(const QString& particle_data_filename) { - const QString& project_name = ui->lineEdit_name->text(); + QString project_name = ui->lineEdit_name->text(); QString projects_dir_path = QDir(qApp->applicationDirPath()).filePath("Projects"); QDir projects_dir(projects_dir_path); QString project_dir_path = projects_dir.filePath(project_name); @@ -132,7 +162,22 @@ void NewMeasureAnalysisDlg::newProject(const QString& particle_data_filename) } else if (ui->rbtn_background_spec->isChecked()) { spec_type = MeasureAnalysisProjectModel::SpectrumType::Background; } + + QString measure_param_filename = ui->comboBox_measure_param->currentData().toString(); + QString project_measure_param_filename = QDir(project_dir_path).filePath(QStringLiteral(u"设备参数配置.mscfg")); + QFileInfo measure_param_file_info(measure_param_filename); + if (measure_param_file_info.exists()) { + QFile::copy(measure_param_filename, project_measure_param_filename); + } + QString energy_scale_filename = ui->comboBox_energy_scale->currentData().toString(); + QString project_energy_scale_filename = QDir(project_dir_path).filePath(QStringLiteral(u"能量刻度.json")); + QFileInfo energy_scale_file_info(energy_scale_filename); + if (energy_scale_file_info.exists()) { + QFile::copy(energy_scale_filename, project_energy_scale_filename); + } + bool is_measure_complete = !particle_data_filename.isEmpty(); + MeasureAnalysisProjectModel* model = new MeasureAnalysisProjectModel; model->SetProjectDir(project_dir_path); model->SetProjectName(project_name); @@ -141,6 +186,8 @@ void NewMeasureAnalysisDlg::newProject(const QString& particle_data_filename) model->SetMeasurePresetTime(measure_preset_time); model->SetConformTimeWin(conform_time_win); model->SetDescriptionInfo(description_info); + model->SetMeasureDeviceParamsCfgFilename(project_measure_param_filename); + model->SetEnergyScaleFilename(energy_scale_filename); model->SetAllChannelParticleDataFilename(particle_data_filename); model->SetIsMeasureComplete(is_measure_complete); ProjectList::Instance()->AddProjectModel(model);