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 "logger.h"
#include "analysisoperationrecorder.h"
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 writeFile(const QString filePath);
void writeAnalysisOperation(QXlsx::Document&);
const QString ConUnitMg = "mg";
const QString ConUnitDegreeCentigrade = "";

View File

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

View File

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

View File

@ -13,6 +13,8 @@
#include "xlsxhandler.h"
#include "itemmanager.h"
namespace AnaOpRecorder = AnalysisOperationRecorder;
CentralWidget::CentralWidget(QWidget *parent)
: QWidget(parent)
,_customPlot(new LocalCustomPlot(this))
@ -328,9 +330,17 @@ void CentralWidget::slotAnalysisSettingApply()
return;
}
drawText(selectPoint,
PointCalculate::textFormatNumbericalLabel(selectPoint));
QString str = PointCalculate::textFormatNumbericalLabel(selectPoint);
drawText(selectPoint,str);
//
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::NumericalLabel;
ao.x1 = x1;
AnaOpRecorder::addAnalysisOperation(ao);
//
break;
}
case AnalysisMode::StartPoint:
@ -339,15 +349,28 @@ void CentralWidget::slotAnalysisSettingApply()
QPair<QPointF, QPointF> startEndPointPair =
PointCalculate::calculateStartAndEndPoint();
//
QPointF point;
QString str;
AnaOpRecorder::AnalysisOperation ao;
if(_analysisMode == AnalysisMode::StartPoint){
drawText(startEndPointPair.first,
PointCalculate::textFormatStartPoint(startEndPointPair.first));
point = startEndPointPair.first;
str = PointCalculate::textFormatStartPoint(point);
ao.mode = AnaOpRecorder::StartPoint;
}else{
drawText(startEndPointPair.second,
PointCalculate::textFormatEndPoint(startEndPointPair.second));
point = startEndPointPair.second;
str = PointCalculate::textFormatEndPoint(point);
ao.mode = AnaOpRecorder::StopPoint;
}
drawText(point,str);
//
ao.x1 = x1;
ao.x2 = x2;
AnaOpRecorder::addAnalysisOperation(ao);
//
break;
}
case AnalysisMode::PeakSynthesisAnalysis:
@ -379,25 +402,34 @@ void CentralWidget::slotAnalysisSettingApply()
logde<<"start,end:"<<startEndPointPair.first.x()<<","
<<startEndPointPair.second.x();
QString str;
if(Global::_displayTimeValue){
double peakPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(peakPoint.x());
double startPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.first.x());
double endPointTime = PointCalculate::obtainTimeValueBasedOnTemperatureValue(startEndPointPair.second.x());
drawText(peakPoint,
PointCalculate::textFormatPeakPointWithTime(
str = PointCalculate::textFormatPeakPointWithTime(
enthalpyValue,
peakPointTime,
startPointTime,
endPointTime));
endPointTime);
drawText(peakPoint,str);
}else{
drawText(peakPoint,
PointCalculate::textFormatPeakPoint(enthalpyValue,
str = PointCalculate::textFormatPeakPoint(enthalpyValue,
peakPoint.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;
}
case AnalysisMode::GlassTransition:
@ -419,6 +451,15 @@ void CentralWidget::slotAnalysisSettingApply()
QString str = QString::number(point.x(),'f',3);
drawText(point,str);
//
AnaOpRecorder::AnalysisOperation ao;
ao.mode = AnaOpRecorder::OnsetTemperaturePoint;
ao.x1 = x1;
ao.x2 = x2;
AnaOpRecorder::addAnalysisOperation(ao);
//
break;
}
case AnalysisMode::EndsetTemperaturePoint:{
@ -731,6 +772,14 @@ void CentralWidget::glassTransitionHandle(const double x1,const double x2)
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) {