2025-05-12T17:29:58
This commit is contained in:
parent
1ebb49e633
commit
c6b02514d4
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -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 = "℃";
|
||||
|
@ -12,4 +12,7 @@ void removeTheLastAnalysisOperation()
|
||||
_ananlysisOperationVtr.removeLast();
|
||||
}
|
||||
}
|
||||
|
||||
QVector<AnalysisOperation> _ananlysisOperationVtr;
|
||||
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -13,6 +13,8 @@
|
||||
#include "xlsxhandler.h"
|
||||
#include "itemmanager.h"
|
||||
|
||||
namespace AnaOpRecorder = AnalysisOperationRecorder;
|
||||
|
||||
CentralWidget::CentralWidget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
,_customPlot(new LocalCustomPlot(this))
|
||||
@ -321,16 +323,24 @@ void CentralWidget::slotAnalysisSettingApply()
|
||||
{
|
||||
QPointF selectPoint = PointCalculate::getClosestPointByX(x1);
|
||||
|
||||
// logde<<"lin1 x:"<<x1;
|
||||
// logde<<"lin1 x:"<<x1;
|
||||
|
||||
if(selectPoint.isNull()){
|
||||
QMessageBox::warning((QWidget*)this->parent(), "warnning", "曲线选择错误.");
|
||||
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(
|
||||
enthalpyValue,
|
||||
peakPointTime,
|
||||
startPointTime,
|
||||
endPointTime));
|
||||
str = PointCalculate::textFormatPeakPointWithTime(
|
||||
enthalpyValue,
|
||||
peakPointTime,
|
||||
startPointTime,
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user