添加测量分析项目创建时的测量参数和能量刻度处理

This commit is contained in:
徐海 2026-05-18 11:18:25 +08:00
parent 4ed8642ea1
commit 02af6f39d9

View File

@ -73,6 +73,36 @@ void NewMeasureAnalysisDlg::initialization()
ui->lineEdit_filename->setProperty("data_file_path", filename); 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<QString> 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<QString> 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); ui->btn_ok->setEnabled(false);
auto turnStackPageBtnState = [this](){ auto turnStackPageBtnState = [this](){
int last_stack_index = ui->stackedWidget->count() - 1; int last_stack_index = ui->stackedWidget->count() - 1;
@ -117,7 +147,7 @@ void NewMeasureAnalysisDlg::initialization()
void NewMeasureAnalysisDlg::newProject(const QString& particle_data_filename) 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"); QString projects_dir_path = QDir(qApp->applicationDirPath()).filePath("Projects");
QDir projects_dir(projects_dir_path); QDir projects_dir(projects_dir_path);
QString project_dir_path = projects_dir.filePath(project_name); 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()) { } else if (ui->rbtn_background_spec->isChecked()) {
spec_type = MeasureAnalysisProjectModel::SpectrumType::Background; 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(); bool is_measure_complete = !particle_data_filename.isEmpty();
MeasureAnalysisProjectModel* model = new MeasureAnalysisProjectModel; MeasureAnalysisProjectModel* model = new MeasureAnalysisProjectModel;
model->SetProjectDir(project_dir_path); model->SetProjectDir(project_dir_path);
model->SetProjectName(project_name); model->SetProjectName(project_name);
@ -141,6 +186,8 @@ void NewMeasureAnalysisDlg::newProject(const QString& particle_data_filename)
model->SetMeasurePresetTime(measure_preset_time); model->SetMeasurePresetTime(measure_preset_time);
model->SetConformTimeWin(conform_time_win); model->SetConformTimeWin(conform_time_win);
model->SetDescriptionInfo(description_info); model->SetDescriptionInfo(description_info);
model->SetMeasureDeviceParamsCfgFilename(project_measure_param_filename);
model->SetEnergyScaleFilename(energy_scale_filename);
model->SetAllChannelParticleDataFilename(particle_data_filename); model->SetAllChannelParticleDataFilename(particle_data_filename);
model->SetIsMeasureComplete(is_measure_complete); model->SetIsMeasureComplete(is_measure_complete);
ProjectList::Instance()->AddProjectModel(model); ProjectList::Instance()->AddProjectModel(model);