diff --git a/src/BackgroundTaskListView/BackgroundTaskListView.cpp b/src/BackgroundTaskListView/BackgroundTaskListView.cpp index 7925179..69cfc4e 100644 --- a/src/BackgroundTaskListView/BackgroundTaskListView.cpp +++ b/src/BackgroundTaskListView/BackgroundTaskListView.cpp @@ -7,6 +7,14 @@ BackgroundTaskListView::BackgroundTaskListView(QWidget* parent) : QTableView(parent) { + this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); + QPalette palette = this->palette(); + palette.setColor(QPalette::Base, Qt::gray); + palette.setColor(QPalette::Text, Qt::white); + this->setPalette(palette); + this->setAutoFillBackground(true); + this->setGridStyle(Qt::NoPen); + this->setModel(BackgroundTaskListModel::Instance()); this->verticalHeader()->setVisible(false); @@ -17,8 +25,6 @@ BackgroundTaskListView::BackgroundTaskListView(QWidget* parent) this->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - - this->setGridStyle(Qt::NoPen); } // ProgressBarItem::ProgressBarItem(const QString &text, QWidget *parent) diff --git a/src/DataProcessWorkPool.cpp b/src/DataProcessWorkPool.cpp index 79a205f..d385319 100644 --- a/src/DataProcessWorkPool.cpp +++ b/src/DataProcessWorkPool.cpp @@ -695,35 +695,41 @@ bool ChannelEnergyScaleFittingTask::processTask() if (fit_degree <= 0) { continue; } - std::vector vec_x, vec_y1, vec_y2; + std::vector vec_x_addr, vec_y_set_energy, vec_y_peak_fwhm; for (const int& addr : energy_scale_fit_data.keys()) { - vec_x.push_back(addr); - vec_y1.push_back(energy_scale_fit_data.value(addr)[0]); - vec_y2.push_back(energy_scale_fit_data.value(addr)[1]); + vec_x_addr.push_back(addr); + vec_y_set_energy.push_back(energy_scale_fit_data.value(addr)[0]); + vec_y_peak_fwhm.push_back(energy_scale_fit_data.value(addr)[1]); } std::vector energy_scale_fit_result_coeffs; try { - energy_scale_fit_result_coeffs = GaussPolyCoe::PolynomialFit(vec_x, vec_y1, fit_degree); + energy_scale_fit_result_coeffs = GaussPolyCoe::PolynomialFit(vec_x_addr, vec_y_set_energy, fit_degree); } catch(const std::exception& e) { QString error = QStringLiteral(u"[%1]%2能量刻度多项式%3次拟合异常:%4!").arg(this->GetProjectName()).arg(channel).arg(fit_degree).arg(QString::fromStdString(e.what())); LOG_WARN(error); } + std::vector vec_fit_energy; + for (int i = 0; i < vec_x_addr.size(); i++) { + int addr = vec_x_addr[i]; + double fit_energy = GaussPolyCoe::Predict(energy_scale_fit_result_coeffs, addr); + vec_fit_energy.push_back(fit_energy); + } arma::vec fwhm_fit_result_coeffs; try { - fwhm_fit_result_coeffs = NolinearLeastSquaresCurveFit::Lsqcurvefit(FwhmModel, vec_y1, vec_y2, { 1.0, 1.0 }); + fwhm_fit_result_coeffs = NolinearLeastSquaresCurveFit::Lsqcurvefit(FwhmModel, vec_fit_energy, vec_y_peak_fwhm, { 1.0, 1.0 }); } catch(const std::exception& e) { QString error = QStringLiteral(u"[%1]%2分辨率拟合异常:%3!").arg(this->GetProjectName()).arg(channel).arg(QString::fromStdString(e.what())); LOG_WARN(error); } const QString& info = QStringLiteral(u"[%1]%2能量刻度拟合完成.").arg(this->GetProjectName()).arg(channel); LOG_INFO(info); - + std::vector > fit_result_data; - for (int i = 0; i < vec_x.size(); i++) { - int addr = vec_x[i]; - double set_energy = vec_y1[i]; - double fit_energy = GaussPolyCoe::Predict(energy_scale_fit_result_coeffs, addr); - double peak_fwhm = vec_y2[i]; + for (int i = 0; i < vec_x_addr.size(); i++) { + int addr = vec_x_addr[i]; + double set_energy = vec_y_set_energy[i]; + double fit_energy = vec_fit_energy[i]; + double peak_fwhm = vec_y_peak_fwhm[i]; double fit_fwhm = FwhmModel(addr, fwhm_fit_result_coeffs); std::vector fit_result_item_data; fit_result_item_data.push_back(addr); @@ -744,7 +750,7 @@ bool ChannelEnergyScaleFittingTask::processTask() if (!energy_scale_data_model.SaveData()) { return false; } - + const QString& info = QStringLiteral(u"[%1]能量刻度拟合完成.").arg(this->GetProjectName()); LOG_INFO(info); return true; @@ -965,7 +971,7 @@ bool EnergyScaleCoincidenceDataTask::processTask() data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy); out_stream << event_id << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ; } else { - LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name)); + // LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name)); // out_stream.close(); // QFile::remove(coincidence_energy_data_filename); // return false; @@ -1057,7 +1063,7 @@ bool EnergyScaleaAntiCoincidenceDataTask::processTask() data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy); out_stream << time_window << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ; } else { - LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name)); + // LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name)); } } out_stream.close(); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index e2bc841..8766a57 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -308,11 +308,6 @@ void MainWindow::initAction() void MainWindow::initStatusBar() { _w_watcher_task_list = new BackgroundTaskListView(this); - _w_watcher_task_list->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); - QPalette palette = _w_watcher_task_list->palette(); - palette.setColor(QPalette::Base, Qt::gray); - _w_watcher_task_list->setPalette(palette); - _w_watcher_task_list->setAutoFillBackground(true); _btn_task_watcher = new QPushButton(QStringLiteral(u"后台任务监视"), _status_bar); _status_bar->addPermanentWidget(_btn_task_watcher);