2025-05-12T17:29:58

This commit is contained in:
yuntang 2025-05-12 17:29:59 +08:00
parent 1ebb49e633
commit c6b02514d4
5 changed files with 77 additions and 19 deletions

View File

@ -1,5 +1,6 @@
#include "xlsxhandler.h" #include "xlsxhandler.h"
#include "logger.h" #include "logger.h"
#include "analysisoperationrecorder.h"
void XlsxHandler::test() void XlsxHandler::test()
{ {
@ -245,3 +246,8 @@ void XlsxHandler::writeFile(const QString filePath)
} }
void XlsxHandler::writeAnalysisOperation(QXlsx::Document xlsx)
{
}

View File

@ -22,6 +22,7 @@ namespace XlsxHandler {
void readPhaseData(QXlsx::Worksheet*,int& startLineIndex,Global::PhaseTotalInfo&); void readPhaseData(QXlsx::Worksheet*,int& startLineIndex,Global::PhaseTotalInfo&);
void writeFile(const QString filePath); void writeFile(const QString filePath);
void writeAnalysisOperation(QXlsx::Document&);
const QString ConUnitMg = "mg"; const QString ConUnitMg = "mg";
const QString ConUnitDegreeCentigrade = ""; const QString ConUnitDegreeCentigrade = "";

View File

@ -12,4 +12,7 @@ void removeTheLastAnalysisOperation()
_ananlysisOperationVtr.removeLast(); _ananlysisOperationVtr.removeLast();
} }
} }
QVector<AnalysisOperation> _ananlysisOperationVtr;
} }

View File

@ -14,11 +14,10 @@ enum AnalysisMode{
}; };
struct AnalysisOperation{ struct AnalysisOperation{
AnalysisMode mode; AnalysisMode mode;
QPointF point; double x1,x2;
QString str;
}; };
QVector<AnalysisOperation> _ananlysisOperationVtr; extern QVector<AnalysisOperation> _ananlysisOperationVtr;
void addAnalysisOperation(const AnalysisOperation); void addAnalysisOperation(const AnalysisOperation);
void removeTheLastAnalysisOperation(); void removeTheLastAnalysisOperation();

View File

@ -13,6 +13,8 @@
#include "xlsxhandler.h" #include "xlsxhandler.h"
#include "itemmanager.h" #include "itemmanager.h"
namespace AnaOpRecorder = AnalysisOperationRecorder;
CentralWidget::CentralWidget(QWidget *parent) CentralWidget::CentralWidget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
,_customPlot(new LocalCustomPlot(this)) ,_customPlot(new LocalCustomPlot(this))
@ -321,16 +323,24 @@ void CentralWidget::slotAnalysisSettingApply()
{ {
QPointF selectPoint = PointCalculate::getClosestPointByX(x1); QPointF selectPoint = PointCalculate::getClosestPointByX(x1);
// logde<<"lin1 x:"<<x1; // logde<<"lin1 x:"<<x1;
if(selectPoint.isNull()){ if(selectPoint.isNull()){
QMessageBox::warning((QWidget*)this->parent(), "warnning", "曲线选择错误."); QMessageBox::warning((QWidget*)this->parent(), "warnning", "曲线选择错误.");
return; return;
} }
drawText(selectPoint, QString str = PointCalculate::textFormatNumbericalLabel(selectPoint);
PointCalculate::textFormatNumbericalLabel(selectPoint));
drawText(selectPoint,str);
//
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::NumericalLabel;
ao.x1 = x1;
AnaOpRecorder::addAnalysisOperation(ao);
//
break; break;
} }
case AnalysisMode::StartPoint: case AnalysisMode::StartPoint:
@ -339,15 +349,28 @@ void CentralWidget::slotAnalysisSettingApply()
QPair<QPointF, QPointF> startEndPointPair = QPair<QPointF, QPointF> startEndPointPair =
PointCalculate::calculateStartAndEndPoint(); PointCalculate::calculateStartAndEndPoint();
//
QPointF point;
QString str;
AnaOpRecorder::AnalysisOperation ao;
if(_analysisMode == AnalysisMode::StartPoint){ if(_analysisMode == AnalysisMode::StartPoint){
drawText(startEndPointPair.first, point = startEndPointPair.first;
PointCalculate::textFormatStartPoint(startEndPointPair.first)); str = PointCalculate::textFormatStartPoint(point);
ao.mode = AnaOpRecorder::StartPoint;
}else{ }else{
drawText(startEndPointPair.second, point = startEndPointPair.second;
PointCalculate::textFormatEndPoint(startEndPointPair.second)); str = PointCalculate::textFormatEndPoint(point);
ao.mode = AnaOpRecorder::StopPoint;
} }
drawText(point,str);
//
ao.x1 = x1;
ao.x2 = x2;
AnaOpRecorder::addAnalysisOperation(ao);
//
break; break;
} }
case AnalysisMode::PeakSynthesisAnalysis: case AnalysisMode::PeakSynthesisAnalysis:
@ -379,25 +402,34 @@ void CentralWidget::slotAnalysisSettingApply()
logde<<"start,end:"<<startEndPointPair.first.x()<<"," logde<<"start,end:"<<startEndPointPair.first.x()<<","
<<startEndPointPair.second.x(); <<startEndPointPair.second.x();
QString str;
if(Global::_displayTimeValue){ if(Global::_displayTimeValue){
double peakPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(peakPoint.x()); double peakPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(peakPoint.x());
double startPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.first.x()); double startPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.first.x());
double endPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.second.x()); double endPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.second.x());
drawText(peakPoint, str = PointCalculate::textFormatPeakPointWithTime(
PointCalculate::textFormatPeakPointWithTime( enthalpyValue,
enthalpyValue, peakPointTime,
peakPointTime, startPointTime,
startPointTime, endPointTime);
endPointTime)); drawText(peakPoint,str);
}else{ }else{
drawText(peakPoint, str = PointCalculate::textFormatPeakPoint(enthalpyValue,
PointCalculate::textFormatPeakPoint(enthalpyValue,
peakPoint.x(), peakPoint.x(),
startEndPointPair.first.x(), startEndPointPair.first.x(),
startEndPointPair.second.x())); startEndPointPair.second.x());
drawText(peakPoint,str);
} }
// //
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::PeakSynthesisAnalysis;
ao.x1 = x1;
ao.x2 = x2;
AnaOpRecorder::addAnalysisOperation(ao);
//
break; break;
} }
case AnalysisMode::GlassTransition: case AnalysisMode::GlassTransition:
@ -419,6 +451,15 @@ void CentralWidget::slotAnalysisSettingApply()
QString str = QString::number(point.x(),'f',3); QString str = QString::number(point.x(),'f',3);
drawText(point,str); drawText(point,str);
//
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::OnsetTemperaturePoint;
ao.x1 = x1;
ao.x2 = x2;
AnaOpRecorder::addAnalysisOperation(ao);
//
break; break;
} }
case AnalysisMode::EndsetTemperaturePoint:{ case AnalysisMode::EndsetTemperaturePoint:{
@ -731,6 +772,14 @@ void CentralWidget::glassTransitionHandle(const double x1,const double x2)
drawText(averagePoint,str); drawText(averagePoint,str);
//
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::GlassTransition;
ao.point = averagePoint;
ao.str = str;
AnaOpRecorder::addAnalysisOperation(ao);
//
} }
// 使用最小二乘法计算线性回归 // 使用最小二乘法计算线性回归
PointCalculate::Line CentralWidget::calculateLinearRegression(const QVector<double>& x, const QVector<double>& y) { PointCalculate::Line CentralWidget::calculateLinearRegression(const QVector<double>& x, const QVector<double>& y) {