2025-05-12T17:29:58
This commit is contained in:
parent
1ebb49e633
commit
c6b02514d4
@ -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)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -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 = "℃";
|
||||||
|
@ -12,4 +12,7 @@ void removeTheLastAnalysisOperation()
|
|||||||
_ananlysisOperationVtr.removeLast();
|
_ananlysisOperationVtr.removeLast();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector<AnalysisOperation> _ananlysisOperationVtr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user