483 lines
16 KiB
C++
483 lines
16 KiB
C++
#pragma warning(push,0)
|
||
// #include "Family.h"
|
||
#include <QMessageBox>
|
||
#include <QFileDialog>
|
||
#include <QPixmap>
|
||
#include <QDesktopServices>
|
||
#include <QtMath>
|
||
#include "Statistics2Dlg.h"
|
||
#include "ui_Statistics2.h"
|
||
#include "CStringType.h"
|
||
#include "Well.h"
|
||
|
||
#pragma warning(pop)
|
||
using namespace pai::ios::welllog;
|
||
BEGIN_OSGGRAPHICS_NAMESPACE
|
||
static float ReadSdep=9999999.,ReadEdep=-9999999;
|
||
CStatistics2Dlg::~CStatistics2Dlg()
|
||
{
|
||
if(m_pUI) delete m_pUI;
|
||
ReadSdep=9999999.,ReadEdep=-9999999;
|
||
}
|
||
CStatistics2Dlg::CStatistics2Dlg(QWidget * parent, Qt::WindowFlags flags)
|
||
: QWidget(parent,flags)//: QDialog(parent,flags)
|
||
{
|
||
m_pUI = new Ui_Statistics2();
|
||
m_pUI->setupUi(this);
|
||
int w=width();
|
||
int h=height();
|
||
if(NULL != parent)
|
||
{
|
||
parent->setFixedSize(w,h);
|
||
}
|
||
m_pUI->cancelbtn->hide();
|
||
QObject::connect(m_pUI->okbtn, SIGNAL(clicked()), this, SLOT(slotSave()));
|
||
QObject::connect(m_pUI->cancelbtn, SIGNAL(clicked()), this, SLOT(slotCancel()));
|
||
QObject::connect(m_pUI->okbtn_Refurbish, SIGNAL(clicked()), this, SLOT(slotRefurbish()));
|
||
QObject::connect(m_pUI->checkBox, SIGNAL(clicked()), this, SLOT(slotCheckLjpl()));
|
||
QObject::connect(m_pUI->lineEditName, SIGNAL(textChanged( QString )),this,SLOT(slotChangeName(QString)));
|
||
QObject::connect(m_pUI->lineEditUnit, SIGNAL(textChanged( QString )),this,SLOT(slotChangeUnit(QString)));
|
||
|
||
QObject::connect(m_pUI->lineEditXmin, SIGNAL(textChanged( QString )),this,SLOT(slotChangeXmin(QString)));
|
||
QObject::connect(m_pUI->lineEditXmin2, SIGNAL(textChanged( QString )),this,SLOT(slotChangeXmin2(QString)));
|
||
QObject::connect(m_pUI->lineEditYmin, SIGNAL(textChanged( QString )),this,SLOT(slotChangeYmin(QString)));
|
||
QObject::connect(m_pUI->lineEditXmax, SIGNAL(textChanged( QString )),this,SLOT(slotChangeXmax(QString)));
|
||
QObject::connect(m_pUI->lineEditXmax2, SIGNAL(textChanged( QString )),this,SLOT(slotChangeXmax2(QString)));
|
||
QObject::connect(m_pUI->lineEditYmax, SIGNAL(textChanged( QString )),this,SLOT(slotChangeYmax(QString)));
|
||
QObject::connect(m_pUI->lineEditSdep, SIGNAL(textChanged( QString )),this,SLOT(slotChangeSdep(QString)));
|
||
QObject::connect(m_pUI->lineEditEdep, SIGNAL(textChanged( QString )),this,SLOT(slotChangeEdep(QString)));
|
||
QObject::connect(m_pUI->lineEditSmallGrid, SIGNAL(textChanged( QString )),this,SLOT(slotChangeSmallGrid(QString)));
|
||
QObject::connect(m_pUI->horizontalSliderSdep, SIGNAL(valueChanged(int)),this, SLOT(slotSetSdep(int)));
|
||
QObject::connect(m_pUI->horizontalSliderEdep, SIGNAL(valueChanged(int)),this, SLOT(slotSetEdep(int)));
|
||
//time
|
||
QObject::connect(m_pUI->lineEditStime, SIGNAL(textChanged( QString )),this,SLOT(slotChangeStime(QString)));
|
||
QObject::connect(m_pUI->lineEditEtime, SIGNAL(textChanged( QString )),this,SLOT(slotChangeEtime(QString)));
|
||
QObject::connect(m_pUI->horizontalSliderStime, SIGNAL(valueChanged(int)),this, SLOT(slotSetStime(int)));
|
||
QObject::connect(m_pUI->horizontalSliderEtime, SIGNAL(valueChanged(int)),this, SLOT(slotSetEtime(int)));
|
||
m_SmallGrid=10;
|
||
fmin=0,fmax=0;
|
||
m_Xmin=0;
|
||
m_Xmax=9999;
|
||
m_Ymin=0;
|
||
m_Ymax=100;
|
||
m_Xmin2=0;
|
||
m_Xmax2=0;
|
||
m_DrawLjpl=0;
|
||
val=NULL;
|
||
QPalette pal;
|
||
m_pUI->widgetPlot->setStyleSheet("background:lightgray");
|
||
m_pUI->widgetPlot->setPalette(pal);
|
||
m_view.setParent(m_pUI->widgetPlot);
|
||
QRect rec=m_pUI->widgetPlot->geometry();
|
||
m_view.widgetRec=QRect(0,0,rec.width(),rec.height());
|
||
|
||
}
|
||
|
||
void CStatistics2Dlg::slotSave()
|
||
{
|
||
// //保存位图,该部分需要罗林配合
|
||
// //QMessageBox::about(NULL,"提示","暂时未作");
|
||
// QString desktopPath=QDesktopServices::storageLocation(QDesktopServices::HomeLocation);
|
||
// desktopPath=desktopPath+QString("/Statistics2.jpg");
|
||
// QString imagePath=QFileDialog::getSaveFileName(this,"(Save Image)",desktopPath,"JPG File(*.jpg)");
|
||
// QSize vSize=m_view.size();
|
||
// QPixmap image(vSize);
|
||
// m_view.render(&image);
|
||
// bool isSave=image.save(imagePath,"JPG");
|
||
// QMessageBox::information(this,"提示","图片保存成功!");
|
||
// //accept();
|
||
}
|
||
/**
|
||
*@brief 取消槽函数
|
||
*/
|
||
void CStatistics2Dlg::slotCancel()
|
||
{
|
||
delete []val;
|
||
//reject ();
|
||
|
||
}
|
||
void CStatistics2Dlg::slotCheckLjpl()
|
||
{
|
||
m_DrawLjpl=!m_DrawLjpl;
|
||
m_view.m_DrawLjpl=m_DrawLjpl;
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeName(const QString &text)
|
||
{
|
||
m_CurveName=text;//m_pUI->lineEditName->text();
|
||
m_view.m_CurveName=m_CurveName;
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeUnit(const QString &text)
|
||
{
|
||
m_CurveUnit=text;//m_pUI->lineEditUnit->text();
|
||
m_view.m_CurveUnit=m_CurveUnit;
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeXmin(const QString &text)
|
||
{
|
||
m_Xmin=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeXmax(const QString &text)
|
||
{
|
||
m_Xmax=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeXmin2(const QString &text)
|
||
{
|
||
m_Xmin2=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeXmax2(const QString &text)
|
||
{
|
||
m_Xmax2=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeYmin(const QString &text)
|
||
{
|
||
m_Ymin=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeYmax(const QString &text)
|
||
{
|
||
m_Ymax=text.toFloat();
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeSdep(const QString &text)
|
||
{
|
||
sdep=text.toFloat();
|
||
if(sdep<m_flStDepth)sdep=m_flStDepth;
|
||
//Refurbish();
|
||
//m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeEdep(const QString &text)
|
||
{
|
||
edep=text.toFloat();
|
||
if(edep>m_flEnDepth)edep=m_flEnDepth;
|
||
//Refurbish();
|
||
//m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeSmallGrid(const QString &text)
|
||
{
|
||
m_SmallGrid=text.toInt();
|
||
if(m_SmallGrid<1)
|
||
{
|
||
m_SmallGrid=1;
|
||
m_pUI->lineEditSmallGrid->setText(QString::number(m_SmallGrid));
|
||
}
|
||
if(m_SmallGrid>10)
|
||
{
|
||
m_SmallGrid=10;
|
||
m_pUI->lineEditSmallGrid->setText(QString::number(m_SmallGrid));
|
||
}
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotSetSdep(const int &dep)
|
||
{
|
||
m_pUI->lineEditSdep->setText(QString::number(dep/100.));
|
||
}
|
||
void CStatistics2Dlg::slotSetEdep(const int &dep)
|
||
{
|
||
m_pUI->lineEditEdep->setText(QString::number(dep/100.));
|
||
|
||
}
|
||
//time
|
||
void CStatistics2Dlg::slotChangeStime(const QString &text)
|
||
{
|
||
stime=text.toFloat();
|
||
if(stime<m_flStTime)stime=m_flStTime;
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotChangeEtime(const QString &text)
|
||
{
|
||
etime=text.toFloat();
|
||
if(etime>m_flEndTime)etime=m_flEndTime;
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::slotSetStime(const int &time)
|
||
{
|
||
m_pUI->lineEditStime->setText(QString::number(time/100.));
|
||
}
|
||
void CStatistics2Dlg::slotSetEtime(const int &time)
|
||
{
|
||
m_pUI->lineEditEtime->setText(QString::number(time/100.));
|
||
|
||
}
|
||
//
|
||
void CStatistics2Dlg::init()
|
||
{
|
||
CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite);
|
||
|
||
int index=logio.OpenWave(CurveName.toStdString().c_str());
|
||
if(index<0) return;
|
||
logio.GetWaveInfo(index,&info);
|
||
num=(info.EndDepth-info.StartDepth)/info.DepLevel+1.5;
|
||
logio.CloseWave(index);
|
||
logio.Close();
|
||
d_min=info.StartDepth;
|
||
d_max=info.EndDepth;
|
||
m_flEnDepth = d_max;
|
||
m_flStDepth = d_min;
|
||
rlev=info.DepLevel;
|
||
|
||
m_flStTime=info.StartTime;
|
||
m_flEndTime=info.StartTime+info.TimeSamples*info.TimeLevel;
|
||
m_CurveName=CurveName,m_CurveUnit="("+QLatin1String(info.Unit)+")";
|
||
m_pUI->lineEditName->setText(CurveName);
|
||
m_pUI->lineEditUnit->setText(m_CurveUnit);
|
||
|
||
m_pUI->lineEditSdep1->setText(QString::number(d_min));
|
||
m_pUI->lineEditEdep1->setText(QString::number(d_max));
|
||
m_pUI->horizontalSliderSdep->setRange(d_min*100,d_max*100);
|
||
|
||
m_pUI->horizontalSliderEdep->setRange(d_min*100,d_max*100);
|
||
|
||
if(num*info.TimeSamples<=100000)//当数据点较少时全部统计
|
||
{
|
||
sdep=d_min;
|
||
edep=d_max;
|
||
}
|
||
else//当数据点较多时统计中间的5000个深度点
|
||
{
|
||
int m_ShowDepPoint=100000./info.TimeSamples;
|
||
m_ShowDepPoint/=2;
|
||
sdep=d_min+(num/2.-m_ShowDepPoint)*rlev;
|
||
edep=sdep+2.*m_ShowDepPoint*rlev;
|
||
}
|
||
m_pUI->lineEditSdep->setText(QString::number(sdep));
|
||
m_pUI->lineEditEdep->setText(QString::number(edep));
|
||
m_pUI->horizontalSliderSdep->setValue(sdep*100);
|
||
m_pUI->horizontalSliderEdep->setValue(edep*100);
|
||
m_pUI->lineEditSmallGrid->setText(QString::number(m_SmallGrid));
|
||
//time
|
||
m_pUI->lineEditStime1->setText(QString::number(m_flStTime));
|
||
m_pUI->lineEditEtime1->setText(QString::number(m_flEndTime));
|
||
m_pUI->horizontalSliderStime->setRange(m_flStTime*100,m_flEndTime*100);
|
||
|
||
m_pUI->horizontalSliderEtime->setRange(m_flStTime*100,m_flEndTime*100);
|
||
|
||
stime=m_flStTime;etime=m_flEndTime;
|
||
m_pUI->lineEditStime->setText(QString::number(stime));
|
||
m_pUI->lineEditEtime->setText(QString::number(etime));
|
||
m_pUI->horizontalSliderStime->setValue(stime*100);
|
||
m_pUI->horizontalSliderEtime->setValue(etime*100);
|
||
//
|
||
Statistics2();
|
||
m_Xmin=min;
|
||
m_Xmax=max;
|
||
m_pUI->lineEditXmin->setText(QString::number(min));
|
||
m_pUI->lineEditXmax->setText(QString::number(max));
|
||
m_pUI->lineEditYmin->setText(QString::number(m_Ymin));
|
||
m_pUI->lineEditYmax->setText(QString::number(m_Ymax));
|
||
Refurbish();
|
||
//初始化主频刻度范围:15%————85%
|
||
int pp=0;
|
||
for(int i=0;i<10*m_SmallGrid;i++)
|
||
{
|
||
pp+=point[i];
|
||
if((float)pp/(float)ShowPoint>=0.15)
|
||
{
|
||
m_Xmin2=m_Xmin+i*(m_Xmax-m_Xmin)/(10.*m_SmallGrid);
|
||
ibegin=i;
|
||
break;
|
||
}
|
||
}
|
||
pp=0;
|
||
for(int i=0;i<10*m_SmallGrid;i++)
|
||
{
|
||
pp+=point[i];
|
||
if((float)pp/(float)ShowPoint>=0.85)
|
||
{
|
||
m_Xmax2=m_Xmin+i*(m_Xmax-m_Xmin)/(10.*m_SmallGrid);
|
||
iend=i;
|
||
break;
|
||
}
|
||
}
|
||
m_pUI->lineEditXmin2->setText(QString::number(m_Xmin2));
|
||
m_pUI->lineEditXmax2->setText(QString::number(m_Xmax2));
|
||
//频率刻度取整
|
||
if(fmax>50.)fmax=100.;
|
||
else if(fmax>20.)fmax=50.;
|
||
else if(fmax>10.)fmax=20.;
|
||
else if(fmax>5.)fmax=10.;
|
||
else fmax=5.;
|
||
m_Ymax=fmax;
|
||
m_Ymin=0;
|
||
m_pUI->lineEditYmin->setText(QString::number(m_Ymin));
|
||
m_pUI->lineEditYmax->setText(QString::number(m_Ymax));
|
||
//for plot
|
||
m_view.m_CurveName=m_CurveName;m_view.m_CurveUnit=m_CurveUnit;//显示的曲线名称和单位
|
||
for(int i=0;i<100;i++)m_view.point[i]=point[i];
|
||
m_view.ShowPoint=ShowPoint;
|
||
m_view.m_SmallGrid=m_SmallGrid;
|
||
|
||
m_view.m_Ymax=m_Ymax;
|
||
m_view.m_Xmin=m_Xmin,m_view.m_Xmax=m_Xmax;
|
||
m_view.m_DrawLjpl=m_DrawLjpl;
|
||
m_view.m_Xmin2=m_Xmin2,m_view.m_Xmax2=m_Xmax2;
|
||
m_view.update();
|
||
}
|
||
void CStatistics2Dlg::Statistics2()
|
||
{
|
||
bool ReReadData=1;
|
||
d_min=sdep;
|
||
d_max=edep;
|
||
if(val!=NULL){
|
||
if((sdep>=ReadSdep&&sdep<=ReadEdep)&&(edep>=ReadSdep&&edep<=ReadEdep))ReReadData=0;}//如果要统计的深度在读取的深度范围内,就不在读数据
|
||
if(ReReadData)
|
||
{
|
||
CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite);
|
||
int index=logio.OpenWave(CurveName.toStdString().c_str());
|
||
if(index<0) return;
|
||
if(val!=NULL)delete []val;
|
||
num=(edep-sdep)/rlev+1.5;
|
||
val=new float[num*info.TimeSamples];
|
||
logio.ReadWave(index,sdep,num,&val[0]);
|
||
logio.CloseWave(index);
|
||
logio.Close();
|
||
ReadSdep=sdep;
|
||
ReadEdep=edep;
|
||
}
|
||
int ist=(sdep-ReadSdep)/rlev+0.5;
|
||
int dpoint=(edep-sdep)/rlev+0.5;//深度点数
|
||
int timepoint=(etime-stime)/info.TimeLevel+0.5;
|
||
tpoint=dpoint*timepoint;
|
||
min=99999;max=-99999;
|
||
average=0;
|
||
depmin=depmax=d_min;
|
||
timemin=timemax=stime;
|
||
int InvalidNum=0;
|
||
for(int i=ist;i<ist+dpoint;i++)
|
||
{
|
||
for(int j=(stime-m_flStTime)/info.TimeLevel;j<(etime-m_flStTime)/info.TimeLevel;j++)
|
||
{
|
||
int pos=i*info.TimeSamples+j;
|
||
if(val[pos]==-9999.||val[pos]==-999.25||val[pos]==-99999.||val[pos]==-9999.25)
|
||
{
|
||
InvalidNum++;
|
||
continue;
|
||
}
|
||
if(min>val[pos]){min=val[pos];depmin=d_min+i*rlev;timemin=j*info.TimeLevel+m_flStTime;}
|
||
if(max<val[pos]){max=val[pos];depmax=d_min+i*rlev;timemax=j*info.TimeLevel+m_flStTime;}
|
||
average+=val[pos];
|
||
}
|
||
}
|
||
//剔除无效点
|
||
if(tpoint>InvalidNum)average/=(tpoint-InvalidNum);
|
||
else average=val[(ist+1)*info.TimeSamples+int((stime-m_flStTime)/info.TimeLevel+0.5)];
|
||
float del=(m_Xmax-m_Xmin)/(10*m_SmallGrid);//del=(max-min)/(10*m_SmallGrid);
|
||
for(int j=0;j<100;j++)point[j]=0;
|
||
double vvv,v1,v2;
|
||
Variance=0.;
|
||
for(int i=ist;i<ist+dpoint;i++)
|
||
{
|
||
for(int k=(stime-m_flStTime)/info.TimeLevel;k<(etime-m_flStTime)/info.TimeLevel;k++)
|
||
{
|
||
int pos=i*info.TimeSamples+k;
|
||
if(val[pos]==-9999.||val[pos]==-999.25||val[pos]==-99999.||val[pos]==-9999.25)continue;
|
||
Variance+=(val[pos]-average)*(val[pos]-average);
|
||
for(int j=0;j<10*m_SmallGrid;j++)
|
||
{
|
||
vvv=val[pos],v1=m_Xmin+j*del,v2=m_Xmin+(float)(j+1)*del;
|
||
if(vvv>=v1&&vvv<=v2)
|
||
{
|
||
point[j]++;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if(tpoint>InvalidNum)Variance/=(tpoint-InvalidNum);
|
||
else Variance=0;
|
||
Variance=qSqrt(Variance);
|
||
DWORD maxpoint=0;//point[0];
|
||
ShowPoint=0;//point[0];
|
||
for(int j=0;j<10*m_SmallGrid;j++)
|
||
{
|
||
if(maxpoint<point[j])
|
||
{
|
||
maxpoint=point[j];
|
||
m_PVmin=m_Xmin+(float)j*del,m_PVmax=m_Xmin+(float)(j+1)*del;
|
||
}
|
||
ShowPoint+=point[j];
|
||
}
|
||
fmax=(float)maxpoint/(float)ShowPoint*100.;//(float)tpoint*100.;
|
||
}
|
||
|
||
void CStatistics2Dlg::slotRefurbish()
|
||
{
|
||
Refurbish();
|
||
m_view.update();
|
||
}
|
||
|
||
void CStatistics2Dlg::Refurbish()
|
||
{
|
||
if(val==NULL)return;
|
||
/*sdep=m_pUI->lineEditSdep->text().toFloat();
|
||
edep=m_pUI->lineEditEdep->text().toFloat();
|
||
m_Xmin=m_pUI->lineEditXmin->text().toFloat();
|
||
m_Xmax=m_pUI->lineEditXmax->text().toFloat();
|
||
m_Xmin2=m_pUI->lineEditXmin2->text().toFloat();
|
||
m_Xmax2=m_pUI->lineEditXmax2->text().toFloat();
|
||
m_Ymin=m_pUI->lineEditYmin->text().toFloat();
|
||
m_Ymax=m_pUI->lineEditYmax->text().toFloat();
|
||
if(sdep<m_flStDepth)sdep=m_flStDepth;
|
||
if(edep>m_flEnDepth)edep=m_flEnDepth;
|
||
if(sdep>=edep)return;
|
||
if(m_Xmin>=m_Xmax)return;
|
||
if(m_Ymin>=m_Ymax)return;
|
||
m_SmallGrid=m_pUI->lineEditSmallGrid->text().toInt();
|
||
if(m_SmallGrid<1)
|
||
{
|
||
m_SmallGrid=1;
|
||
m_pUI->lineEditSmallGrid->setText(QString::number(m_SmallGrid));
|
||
}
|
||
if(m_SmallGrid>10)
|
||
{
|
||
m_SmallGrid=10;
|
||
m_pUI->lineEditSmallGrid->setText(QString::number(m_SmallGrid));
|
||
}*/
|
||
if(sdep>=edep)return;
|
||
if(m_Xmin>=m_Xmax)return;
|
||
if(m_Ymin>=m_Ymax)return;
|
||
Statistics2();
|
||
QString str,jieguo;
|
||
str="开始深度 : "+QString::number(sdep)+"("+QLatin1String(info.DepthUnit)+")";jieguo="\r\n"+str;
|
||
str="结束深度 : "+QString::number(edep)+"("+QLatin1String(info.DepthUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
str="统计深度段: "+QString::number(edep-sdep)+"("+QLatin1String(info.DepthUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
str="开始时间 : "+QString::number(stime)+"("+QLatin1String(info.TimeUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
str="结束时间 : "+QString::number(etime)+"("+QLatin1String(info.TimeUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
|
||
str="有效数据点数 : "+QString::number(ShowPoint);jieguo+="\r\n\r\n"+str;//tpoint);
|
||
str="最小值 : "+QString::number(min)+m_CurveUnit;jieguo+="\r\n\r\n"+str;
|
||
str="最小值深度、时间 : "+QString::number(depmin)+"("+QLatin1String(info.DepthUnit)+"),"+QString::number(timemin)+"("+QLatin1String(info.TimeUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
str="最大值 : "+QString::number(max)+m_CurveUnit;jieguo+="\r\n\r\n"+str;
|
||
str="最大值深度、时间 : "+QString::number(depmax)+"("+QLatin1String(info.DepthUnit)+"),"+QString::number(timemax)+"("+QLatin1String(info.TimeUnit)+")";jieguo+="\r\n\r\n"+str;
|
||
str="平均值 : "+QString::number(average)+m_CurveUnit;jieguo+="\r\n\r\n"+str;
|
||
str="最大频率 : "+QString::number(fmax);str+="/%";jieguo+="\r\n\r\n"+str;
|
||
str="最大频率数值范围 : "+QString::number(m_PVmin)+" -- "+QString::number(m_PVmax);jieguo+="\r\n\r\n"+str;
|
||
str="标准偏差 : "+QString::number(Variance);jieguo+="\r\n\r\n"+str;
|
||
m_pUI->textEditJieGuo->setText(jieguo);
|
||
//for plot
|
||
m_view.m_CurveName=m_CurveName;m_view.m_CurveUnit=m_CurveUnit;//显示的曲线名称和单位
|
||
for(int i=0;i<100;i++)m_view.point[i]=point[i];
|
||
m_view.ShowPoint=ShowPoint;
|
||
m_view.m_SmallGrid=m_SmallGrid;
|
||
|
||
m_view.m_Ymax=m_Ymax;
|
||
m_view.m_Xmin=m_Xmin,m_view.m_Xmax=m_Xmax;
|
||
m_view.m_DrawLjpl=m_DrawLjpl;
|
||
m_view.m_Xmin2=m_Xmin2,m_view.m_Xmax2=m_Xmax2;
|
||
}
|
||
END_OSGGRAPHICS_NAMESPACE
|