成像到属性的开发,完成属性,剩余滤波方式,N*N取奇数。
This commit is contained in:
parent
3bcc8f031d
commit
21f354d061
|
|
@ -180,7 +180,7 @@ signals:
|
||||||
void sig_changeScale(QString strUuid, int iNewScale);
|
void sig_changeScale(QString strUuid, int iNewScale);
|
||||||
|
|
||||||
//自定义滚动条
|
//自定义滚动条
|
||||||
void sig_vertScrollBarChanged_setGeometry(QString strUuid, double iNewValue, double low, double upper);
|
void sig_vertScrollBarChanged_setGeometry(QString strUuid, double iNewValue, double low, double upper, int ndepth);
|
||||||
//自定义滚动条
|
//自定义滚动条
|
||||||
void sig_vertScrollBarChanged(QString strUuid, double iNewValue, double low, double upper);
|
void sig_vertScrollBarChanged(QString strUuid, double iNewValue, double low, double upper);
|
||||||
//自定义滚动条(三图一表)
|
//自定义滚动条(三图一表)
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
#include "PropertyWidget.h"
|
#include "PropertyWidget.h"
|
||||||
#include "DrawTvd.h"
|
#include "DrawTvd.h"
|
||||||
#include "DepthProgress.h"
|
#include "DepthProgress.h"
|
||||||
|
#include "CylinderImagePlot.h"
|
||||||
|
|
||||||
//以下参数从配置文件读取
|
//以下参数从配置文件读取
|
||||||
extern int g_iOneWidth; //道宽
|
extern int g_iOneWidth; //道宽
|
||||||
|
|
@ -3338,7 +3339,7 @@ void FormDraw::s_AddLine_Property(QString strUuid, QString strSlfName, QString s
|
||||||
|
|
||||||
AppendConsole(PAI_INFO, "FormDraw s_AddLine_Property end");
|
AppendConsole(PAI_INFO, "FormDraw s_AddLine_Property end");
|
||||||
}
|
}
|
||||||
//#include "CylinderImagePlot.h"
|
|
||||||
void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName)
|
void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName)
|
||||||
{
|
{
|
||||||
//井名&道名不一致
|
//井名&道名不一致
|
||||||
|
|
@ -4031,9 +4032,10 @@ void FormDraw::s_addDrawImage(QString strUuid, QString strSlfName, QString strWe
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName);
|
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName, "DrawImageObject");
|
||||||
//绑定m_formTrack,方便关联formInfo
|
//绑定m_formTrack,方便关联formInfo
|
||||||
curv->m_formTrack = m_formTrack;
|
curv->m_formTrack = m_formTrack;
|
||||||
|
curv->setScaleX(0, 264);
|
||||||
curv->setDepthY(m_iY1, m_iY2);
|
curv->setDepthY(m_iY1, m_iY2);
|
||||||
if (nW <= 0)
|
if (nW <= 0)
|
||||||
nW = g_iOneWidth;
|
nW = g_iOneWidth;
|
||||||
|
|
@ -4045,8 +4047,18 @@ void FormDraw::s_addDrawImage(QString strUuid, QString strSlfName, QString strWe
|
||||||
QString strWaveName = "";
|
QString strWaveName = "";
|
||||||
int _nSamples = 0;
|
int _nSamples = 0;
|
||||||
curv->initImage(strSlfName, strWaveName);
|
curv->initImage(strSlfName, strWaveName);
|
||||||
|
//curv->initImage3D(strSlfName, strWaveName);
|
||||||
|
|
||||||
//DrawImageNew_NoFilter(curv, strSlfName, strWaveName, _nSamples);
|
//DrawImageNew_NoFilter(curv, strSlfName, strWaveName, _nSamples);
|
||||||
|
|
||||||
|
//curv->m_colorMap->setVisible(false);
|
||||||
|
//CylindricalImageMap* cylinderMap = new CylindricalImageMap(curv->xAxis, curv->yAxis);
|
||||||
|
//cylinderMap->setData(curv->m_colorMap->data());
|
||||||
|
//cylinderMap->setCylinderRadius(2.0);
|
||||||
|
//cylinderMap->setSourceColorMap(curv->m_colorMap); // 共享梯度
|
||||||
|
//cylinderMap->setAzimuth(45);
|
||||||
|
//cylinderMap->setElevation(30);
|
||||||
|
|
||||||
//
|
//
|
||||||
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
|
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ void MainWindowCurve::vertScrollBarChanged(int value)
|
||||||
{
|
{
|
||||||
double iCurValue = dDelta - (iNumShow-1)*dScrollHeight;
|
double iCurValue = dDelta - (iNumShow-1)*dScrollHeight;
|
||||||
//通知界面重设范围
|
//通知界面重设范围
|
||||||
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue, dScrollHeight_setGeometry, 0);
|
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue, dScrollHeight_setGeometry, 0, value);
|
||||||
}
|
}
|
||||||
else if(iNumShow>0)
|
else if(iNumShow>0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,14 @@ extern double g_SDepthFac;
|
||||||
extern double g_EDepthFac;
|
extern double g_EDepthFac;
|
||||||
extern QString g_SelectMFac;
|
extern QString g_SelectMFac;
|
||||||
|
|
||||||
QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) :
|
QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strType) :
|
||||||
QCustomPlot(parent)
|
QCustomPlot(parent)
|
||||||
{
|
{
|
||||||
m_strSlfName = strSlfName;
|
m_strSlfName = strSlfName;
|
||||||
m_strWellName = strWellName;
|
m_strWellName = strWellName;
|
||||||
m_strTrackName = strTrackName;
|
m_strTrackName = strTrackName;
|
||||||
m_strLineName = strLineName;
|
m_strLineName = strLineName;
|
||||||
|
m_strType = strType;
|
||||||
|
|
||||||
// 创建一个新的顶层图层(如果还没有)
|
// 创建一个新的顶层图层(如果还没有)
|
||||||
if (!this->layer("topLayer")) {
|
if (!this->layer("topLayer")) {
|
||||||
|
|
@ -131,7 +132,7 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
|
||||||
|
|
||||||
//自定义滚动条
|
//自定义滚动条
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged(QString, double, double, double)), this, SLOT(vertScrollBarChanged(QString, double, double, double)));
|
connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged(QString, double, double, double)), this, SLOT(vertScrollBarChanged(QString, double, double, double)));
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged_setGeometry(QString, double, double, double)), this, SLOT(vertScrollBarChanged_setGeometry(QString, double, double, double)));
|
connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged_setGeometry(QString, double, double, double, int)), this, SLOT(vertScrollBarChanged_setGeometry(QString, double, double, double, int)));
|
||||||
|
|
||||||
//曲线选中,置顶
|
//曲线选中,置顶
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString, int, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString, int, QString)));
|
connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString, int, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString, int, QString)));
|
||||||
|
|
@ -635,147 +636,7 @@ void QMyCustomPlot::initCurve(QString strSlfName, QString strLineName)
|
||||||
|
|
||||||
void QMyCustomPlot::initImage(QString strSlfName, QString strWaveName)
|
void QMyCustomPlot::initImage(QString strSlfName, QString strWaveName)
|
||||||
{
|
{
|
||||||
if (strSlfName.isEmpty()) return;
|
updateImage(m_iY2);
|
||||||
if (strWaveName == "" || strWaveName == "AC") strWaveName = "DYNIMAGE";
|
|
||||||
|
|
||||||
CLogIO *logio = new CLogIO();
|
|
||||||
logio->Open(strSlfName.toStdString().c_str(), CSlfIO::modeRead);
|
|
||||||
//
|
|
||||||
int index = logio->OpenWave(strWaveName.toStdString().c_str());
|
|
||||||
if (index < 0) {
|
|
||||||
delete logio;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_nUseColor = 1;
|
|
||||||
QMyCustomPlot* widget = this;
|
|
||||||
Slf_WAVE _wave;
|
|
||||||
logio->GetWaveInfo(index, &_wave);
|
|
||||||
float _SDep, _EDep, _Rlev;
|
|
||||||
_SDep = _wave.StartDepth;
|
|
||||||
_EDep = _wave.EndDepth;
|
|
||||||
m_SDep = _SDep;
|
|
||||||
m_EDep = _EDep;
|
|
||||||
// _SDep = 0.0 - m_iY2;
|
|
||||||
// _EDep = 0.0 - m_iY1;
|
|
||||||
_Rlev = _wave.DepLevel;
|
|
||||||
int m_Record = (float)(fabs((_EDep - _SDep) / _Rlev + 0.5));
|
|
||||||
|
|
||||||
int _nSamples = _wave.TimeSamples;
|
|
||||||
m_nSamples = _nSamples;
|
|
||||||
if (m_fScaleV <= 0.0f)
|
|
||||||
m_fScaleV = _nSamples;
|
|
||||||
char *value = new char[(_nSamples + 1)*m_Record*_wave.CodeLen + 1];
|
|
||||||
logio->ReadWave(index, _SDep, m_Record, (void *)value);
|
|
||||||
logio->CloseWave(index);
|
|
||||||
delete logio;
|
|
||||||
|
|
||||||
bool bFistValue = false;
|
|
||||||
float vmax = -9999;//(float)_nSamples;
|
|
||||||
float vmin = -9999;
|
|
||||||
|
|
||||||
float detp = _SDep;
|
|
||||||
float edepc = _EDep;
|
|
||||||
if (m_nWaveJg < 10)
|
|
||||||
m_nWaveJg = 10;
|
|
||||||
float m_r = _Rlev * m_nWaveJg;
|
|
||||||
float m_MoveDep = 0.0f;
|
|
||||||
|
|
||||||
float yscale = 1;
|
|
||||||
if (m_nWaveHei > 1)
|
|
||||||
{
|
|
||||||
float DifBase = 1;
|
|
||||||
if (m_nDrawType == 2 || m_nDrawType == 6 || m_nDrawType == 10) {
|
|
||||||
DifBase = (m_MaxRange - m_Base) / m_nColorNum;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
DifBase = (m_MaxRange - m_Base) / 1;
|
|
||||||
}
|
|
||||||
if (fabs(DifBase) <= 1e-6) DifBase = 1;
|
|
||||||
|
|
||||||
yscale = m_nWaveHei + DifBase;
|
|
||||||
yscale = yscale / DifBase;
|
|
||||||
}
|
|
||||||
|
|
||||||
//QVector< QVector <double>> vecWave;
|
|
||||||
m_vecWaveData.clear();
|
|
||||||
for (float dep1 = detp - 10 * m_r; dep1 < edepc + m_MoveDep + 10 * m_r; dep1 += m_r)
|
|
||||||
{
|
|
||||||
int iIndex = Slf_Int(dep1 + m_MoveDep, _SDep, _Rlev);
|
|
||||||
if (iIndex < 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iIndex >= m_Record)
|
|
||||||
break;
|
|
||||||
|
|
||||||
QVector <double> ve(_nSamples);
|
|
||||||
for (int kk = 0; kk < _nSamples; kk++)
|
|
||||||
{
|
|
||||||
double val = GetData(_wave.RepCode, (char *)&value[iIndex * _nSamples*_wave.CodeLen + kk * _wave.CodeLen]);
|
|
||||||
ve[kk] = val;// 256 * (val - m_LeftVal) / (m_RightVal - m_LeftVal);
|
|
||||||
//ve[kk] = (int)((val - m_Base)*yscale);
|
|
||||||
if (val == -9999)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bFistValue == false)
|
|
||||||
{
|
|
||||||
//最大值,最小值默认采用第一个有效值
|
|
||||||
bFistValue = true;
|
|
||||||
vmax = vmin = val;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
if (vmax < val)vmax = val;
|
|
||||||
if (vmin > val)vmin = val;
|
|
||||||
}
|
|
||||||
m_vecWaveData << ve;
|
|
||||||
}
|
|
||||||
|
|
||||||
delete[] value;
|
|
||||||
|
|
||||||
widget->m_fmin = vmin;
|
|
||||||
widget->m_fmax = vmax;
|
|
||||||
//
|
|
||||||
if (!widget->m_bX2Y)
|
|
||||||
{
|
|
||||||
widget->setScaleX(0, 264);
|
|
||||||
widget->xAxis->setVisible(false);
|
|
||||||
widget->xAxis2->setVisible(false);
|
|
||||||
widget->yAxis->setVisible(false);
|
|
||||||
widget->yAxis2->setVisible(false);
|
|
||||||
|
|
||||||
//对调XY轴,在最前面设置
|
|
||||||
QCPAxis *yAxis = widget->yAxis;
|
|
||||||
QCPAxis *xAxis = widget->xAxis;
|
|
||||||
widget->xAxis = yAxis;
|
|
||||||
widget->yAxis = xAxis;
|
|
||||||
widget->m_bX2Y = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------
|
|
||||||
// set up the QCPColorMap:
|
|
||||||
if (widget->m_colorMap == NULL)
|
|
||||||
{
|
|
||||||
QCPColorMap *colorMap = new QCPColorMap(widget->xAxis, widget->yAxis);
|
|
||||||
widget->m_colorMap = colorMap;
|
|
||||||
// 添加色标:
|
|
||||||
QCPColorScale *colorScale = new QCPColorScale(widget);
|
|
||||||
colorMap->setColorScale(colorScale); // 将颜色图与色标关联
|
|
||||||
|
|
||||||
// :现在,我们通过访问颜色贴图的QCPColorMapData实例来分配一些数据:
|
|
||||||
this->updateImageWave();
|
|
||||||
|
|
||||||
// 重新缩放数据维度(颜色),以使所有数据点都位于颜色渐变显示的范围内:
|
|
||||||
//colorMap->rescaleDataRange();
|
|
||||||
|
|
||||||
this->setSchemeIndex(m_nSchemeIndex, m_nColorNum);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this->updateImageWave();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMyCustomPlot::initColorTable()
|
void QMyCustomPlot::initColorTable()
|
||||||
|
|
@ -856,45 +717,418 @@ QCPColorMap * QMyCustomPlot::updateWave()
|
||||||
return m_colorMap;
|
return m_colorMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
QCPColorMap * QMyCustomPlot::updateImageWave()
|
void QMyCustomPlot::updateImage(float fTopY)
|
||||||
{
|
{
|
||||||
int nx = m_vecWaveData.size();
|
|
||||||
int ny = m_nSamples;
|
|
||||||
|
|
||||||
m_colorMap->data()->setSize(nx, ny); // 我们希望彩色地图有nx*ny的数据点
|
|
||||||
float f = 0.99;// 264 / 269.0f;
|
|
||||||
m_colorMap->data()->setRange(QCPRange(0 - m_EDep, 0 - m_SDep), QCPRange(this->m_iX1, this->m_iX2*f));
|
|
||||||
|
|
||||||
int nbs = 1024;
|
|
||||||
|
|
||||||
float fLeftVal = 0;
|
|
||||||
float fRightVal = 128;
|
|
||||||
FormInfo* pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
|
FormInfo* pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
|
||||||
|
bool bShow3D = false;
|
||||||
if (pInfo)
|
if (pInfo)
|
||||||
{
|
{
|
||||||
fLeftVal = pInfo->m_ImgMinVal;
|
bShow3D = pInfo->m_bShow3D;
|
||||||
fRightVal = pInfo->m_ImgMaxVal;
|
}
|
||||||
|
if (bShow3D)
|
||||||
|
{
|
||||||
|
updateImage3D(fTopY, pInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateImage(fTopY, pInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::updateImage(float fTopY, FormInfo* pInfo)
|
||||||
|
{
|
||||||
|
CLogIO *logio = new CLogIO();
|
||||||
|
logio->Open(m_strSlfName.toStdString().c_str(), CSlfIO::modeRead);
|
||||||
|
//
|
||||||
|
int iIndex = logio->OpenWave(m_strLineName.toStdString().c_str());
|
||||||
|
if (iIndex < 0) {
|
||||||
|
delete logio;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int xIndex = 0; xIndex < nx; ++xIndex)
|
m_nUseColor = 1;
|
||||||
|
|
||||||
|
Slf_WAVE _wave;
|
||||||
|
logio->GetWaveInfo(iIndex, &_wave);
|
||||||
|
|
||||||
|
m_SDep = _wave.StartDepth;
|
||||||
|
m_EDep = _wave.EndDepth;
|
||||||
|
m_Rlev = _wave.DepLevel;
|
||||||
|
|
||||||
|
float sdep, edep, flDepthScale = 18.897617f, temp;
|
||||||
|
float sdepc = abs(fTopY);// _wave.StartDepth;
|
||||||
|
sdep = sdepc;
|
||||||
|
edep = sdep + 50;
|
||||||
|
|
||||||
|
if (edep > m_EDep) edep = m_EDep;
|
||||||
|
if (sdep < m_SDep) sdep = m_SDep;
|
||||||
|
if (sdep > m_EDep) return;
|
||||||
|
if (edep < m_SDep) return;
|
||||||
|
if (edep > m_EDep) edep = m_EDep;
|
||||||
|
if (edep < sdep) edep = sdep;
|
||||||
|
if (edep > m_EDep) edep = m_EDep;
|
||||||
|
if (sdep > m_EDep) sdep = m_EDep;
|
||||||
|
|
||||||
|
int incount = (edep - sdep) / m_Rlev;
|
||||||
|
if (incount == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
float flDep;
|
||||||
|
int i, ii, j, nPoint = 0, m;
|
||||||
|
QRectF rt, wrt;
|
||||||
|
float dep, ch;
|
||||||
|
double ratio;
|
||||||
|
CString cs;
|
||||||
|
QString qs;
|
||||||
|
|
||||||
|
int ytmp = -1;
|
||||||
|
float y = 9999999.0;
|
||||||
|
|
||||||
|
//计算数据点数
|
||||||
|
temp = _wave.TimeSamples;
|
||||||
|
if (temp < 0) temp -= 0.5;
|
||||||
|
nPoint = abs(temp);
|
||||||
|
|
||||||
|
ratio = 1.0;// int((float)incount * 1000 / rt.height()) / 1000.0; //比例
|
||||||
|
|
||||||
|
char *value = new char[incount*nPoint*_wave.CodeLen];
|
||||||
|
|
||||||
|
//按块读数据
|
||||||
|
if (iIndex >= 0)
|
||||||
{
|
{
|
||||||
for (int yIndex = 0; yIndex < ny; ++yIndex)
|
logio->ReadWave(iIndex, sdep, incount, (void *)value);
|
||||||
{
|
|
||||||
double dz = m_vecWaveData[xIndex][yIndex];
|
|
||||||
if (dz == -9999)
|
|
||||||
{
|
|
||||||
dz = m_fmin;
|
|
||||||
}
|
|
||||||
dz = dz * nbs/ (fRightVal - fLeftVal);
|
|
||||||
if (dz > m_fmax)
|
|
||||||
{
|
|
||||||
dz = m_fmax;
|
|
||||||
}
|
|
||||||
m_colorMap->data()->setCell(nx - xIndex - 1, yIndex, dz);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
m_colorMap->setDataRange(QCPRange(m_fmin, m_fmax));
|
else memset(value, 0, incount*nPoint*_wave.CodeLen);
|
||||||
return m_colorMap;
|
|
||||||
|
float depcount = (float)incount / (edep - sdep);
|
||||||
|
float depcount1 = 0;
|
||||||
|
|
||||||
|
QSize qsize;
|
||||||
|
|
||||||
|
int rh = 1000;// rt.height();
|
||||||
|
int rw = this->size().width();
|
||||||
|
long nLnBytes = (nPoint * 3 + 3) / 4 * 4;
|
||||||
|
unsigned char *pData = new unsigned char[nLnBytes*(int)(rh + 0.5)];
|
||||||
|
memset(pData, 255, nLnBytes*(int)(rh + 0.5));
|
||||||
|
|
||||||
|
int datatype = 0;
|
||||||
|
int m_LeftVal = 0;
|
||||||
|
int m_RightVal = 128;
|
||||||
|
float m_flBackVal = -9999;
|
||||||
|
if (pInfo)
|
||||||
|
{
|
||||||
|
datatype = pInfo->m_nCoord;
|
||||||
|
m_LeftVal = pInfo->m_ImgMinVal;
|
||||||
|
m_RightVal = pInfo->m_ImgMaxVal;
|
||||||
|
m_flBackVal = -9999;
|
||||||
|
m_nSchemeIndex = pInfo->m_nSchemeIndex;
|
||||||
|
}
|
||||||
|
//获取颜色数组
|
||||||
|
QList<QRgb> rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, m_nSchemeIndex, 256);
|
||||||
|
QRgb rgbbg = QtColorTableData::getInstance()->getRgb_Bg(m_nSchemeIndex);
|
||||||
|
|
||||||
|
for (double dep1 = sdep; dep1 < edep; dep1 += ratio * m_Rlev)
|
||||||
|
{
|
||||||
|
y = (dep1 - sdepc)*flDepthScale;
|
||||||
|
//y = ConvertY( eCoord_GEO,dep1,eCoord_GEONormal );
|
||||||
|
if (y < 0) continue;
|
||||||
|
if (ytmp == int(y)) continue;
|
||||||
|
else ytmp = y;
|
||||||
|
wrt.setTop(y);
|
||||||
|
depcount1 = (dep1 - sdep)*depcount;
|
||||||
|
|
||||||
|
for (i = 0; i < nPoint; i++)
|
||||||
|
{
|
||||||
|
ch = GetData(_wave.RepCode, (char *)&value[(int(depcount1)*nPoint + i)*_wave.CodeLen]);
|
||||||
|
if (wrt.top() >= rh)
|
||||||
|
break;
|
||||||
|
m = (int)wrt.top();
|
||||||
|
if (m_flBackVal != ch)
|
||||||
|
{
|
||||||
|
if (datatype == 0) //线性刻度
|
||||||
|
{
|
||||||
|
ii = 256 * (ch - m_LeftVal) / (m_RightVal - m_LeftVal);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_LeftVal < 1.0)
|
||||||
|
ii = 256 * (log10(ch)) / log10(m_RightVal);
|
||||||
|
else
|
||||||
|
ii = 256 * (log10(ch) - log10(m_LeftVal)) / (log10(m_RightVal) - log10(m_LeftVal));
|
||||||
|
}
|
||||||
|
if (ii > 254) ii = 254;
|
||||||
|
if (ii < 0) ii = 0;
|
||||||
|
|
||||||
|
pData[m*nLnBytes + 3 * i] = qRed(rgbList.at(ii));
|
||||||
|
pData[m*nLnBytes + 3 * i + 1] = qGreen(rgbList.at(ii));
|
||||||
|
pData[m*nLnBytes + 3 * i + 2] = qBlue(rgbList.at(ii));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pData[m*nLnBytes + 3 * i] = qRed(rgbbg);
|
||||||
|
pData[m*nLnBytes + 3 * i + 1] = qGreen(rgbbg);
|
||||||
|
pData[m*nLnBytes + 3 * i + 2] = qBlue(rgbbg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} //read data end
|
||||||
|
|
||||||
|
int nheight = rh;
|
||||||
|
if (wrt.top() < rh - 1)
|
||||||
|
nheight = (int)(wrt.top() + 0.5); //若数据行数小于rt.Height()
|
||||||
|
|
||||||
|
//防止图片扭曲:同时限定每一行的数据大小可以保证
|
||||||
|
QImage membmp(pData, nPoint, nheight, 3 * nPoint, QImage::Format_RGB888);
|
||||||
|
qsize.setWidth(rw - 2);
|
||||||
|
qsize.setHeight(nheight);
|
||||||
|
// 图像缩放
|
||||||
|
QImage result = membmp.scaled(qsize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||||
|
//result.save("E:\\ALogplus\\doc\\1.png");
|
||||||
|
//pDC->drawImage(rt.left() + 1, mrt.top(), result);
|
||||||
|
if (mPixmap_tx == NULL)
|
||||||
|
{
|
||||||
|
mPixmap_tx = new QCPItemPixmap(this);
|
||||||
|
}
|
||||||
|
//mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
|
||||||
|
mPixmap_tx->topLeft->setCoords(m_iX1, -sdep);
|
||||||
|
mPixmap_tx->bottomRight->setCoords(m_iX2, -edep);
|
||||||
|
mPixmap_tx->setPixmap(QPixmap::fromImage(result));
|
||||||
|
delete[]pData; pData = NULL;
|
||||||
|
delete[]value;
|
||||||
|
this->replot();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::updateImage3D(float fTopY, FormInfo* pInfo)
|
||||||
|
{
|
||||||
|
CLogIO *logio = new CLogIO();
|
||||||
|
logio->Open(m_strSlfName.toStdString().c_str(), CSlfIO::modeRead);
|
||||||
|
//
|
||||||
|
int iIndex = logio->OpenWave(m_strLineName.toStdString().c_str());
|
||||||
|
if (iIndex < 0) {
|
||||||
|
delete logio;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_nUseColor = 1;
|
||||||
|
|
||||||
|
Slf_WAVE _wave;
|
||||||
|
logio->GetWaveInfo(iIndex, &_wave);
|
||||||
|
|
||||||
|
m_SDep = _wave.StartDepth;
|
||||||
|
m_EDep = _wave.EndDepth;
|
||||||
|
m_Rlev = _wave.DepLevel;
|
||||||
|
|
||||||
|
float sdep, edep, flDepthScale = 18.897617f, temp;
|
||||||
|
float sdepc = abs(fTopY);// _wave.StartDepth;
|
||||||
|
sdep = sdepc;
|
||||||
|
edep = sdep + 50;
|
||||||
|
|
||||||
|
if (sdep > m_EDep) sdep = m_EDep;
|
||||||
|
if (edep < m_SDep) edep = m_SDep;
|
||||||
|
if (sdep < m_SDep) sdep = m_SDep;
|
||||||
|
if (edep > m_EDep) edep = m_EDep;
|
||||||
|
if (edep < sdep) edep = sdep;
|
||||||
|
|
||||||
|
int iDepCount = (edep - sdep) / m_Rlev;
|
||||||
|
if (iDepCount == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 计算开始数据点及数据点数
|
||||||
|
int nPoint, m;
|
||||||
|
float flVal;
|
||||||
|
//计算数据点数
|
||||||
|
temp = _wave.TimeSamples;
|
||||||
|
if (temp < 0) temp -= 0.5;
|
||||||
|
nPoint = abs(temp);
|
||||||
|
// 绘制
|
||||||
|
QRectF wrt;
|
||||||
|
int dep = 0;
|
||||||
|
float detp = sdepc;
|
||||||
|
|
||||||
|
int rh = 1000;// rt.height();
|
||||||
|
int rw = this->size().width();
|
||||||
|
double ratio = 1;// int((float)iDepCount * 1000 / rt.height()) / 1000.0;
|
||||||
|
if (ratio > 1) ratio = 1;
|
||||||
|
char *value = new char[iDepCount*nPoint*_wave.CodeLen];
|
||||||
|
long nLnBytes = (nPoint * 3 + 3) / 4 * 4;
|
||||||
|
unsigned char *pData = new unsigned char[nLnBytes*(int)(rh + 0.5)];
|
||||||
|
memset(pData, 255, nLnBytes*(int)(rh + 0.5));
|
||||||
|
|
||||||
|
int m_iStartAngle = 20;
|
||||||
|
int m_iStartPos = 0;
|
||||||
|
int datatype = 0;
|
||||||
|
int m_LeftVal = 0;
|
||||||
|
int m_RightVal = 128;
|
||||||
|
if (pInfo)
|
||||||
|
{
|
||||||
|
m_iStartAngle = pInfo->m_nOverlook;
|
||||||
|
m_iStartPos = pInfo->m_nAzimuth;
|
||||||
|
datatype = pInfo->m_nCoord;
|
||||||
|
m_LeftVal = pInfo->m_ImgMinVal;
|
||||||
|
m_RightVal = pInfo->m_ImgMaxVal;
|
||||||
|
m_nSchemeIndex = pInfo->m_nSchemeIndex;
|
||||||
|
}
|
||||||
|
QList<QRgb> rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, m_nSchemeIndex, 256);
|
||||||
|
float pi = 3.1415926;
|
||||||
|
float angle = pi / ((float)nPoint / 2.0);
|
||||||
|
int drawdep;
|
||||||
|
float fangle = m_iStartAngle / 90.0;
|
||||||
|
int r = rw / 4 * fangle;
|
||||||
|
int dis = nPoint / 4;
|
||||||
|
float flOffset = 0;
|
||||||
|
int drawFlag = -1;
|
||||||
|
int drawHead = 0;
|
||||||
|
|
||||||
|
|
||||||
|
bool flag1 = ((sdep > detp) || (sdep > detp));
|
||||||
|
bool flag2 = ((m_SDep < sdep) || (m_SDep > sdep));
|
||||||
|
int ioffset = m_iStartPos * nPoint / 360.0 + 0.5;
|
||||||
|
|
||||||
|
int ytmp = -1;
|
||||||
|
for (double dep1 = sdep; dep1 < edep; dep1 += ratio * m_Rlev)
|
||||||
|
{
|
||||||
|
float y = (dep1 - sdepc)*flDepthScale;
|
||||||
|
if (ytmp == int(y)) continue;
|
||||||
|
else ytmp = y;
|
||||||
|
wrt.setTop(y);
|
||||||
|
|
||||||
|
drawFlag++;
|
||||||
|
if (!drawFlag)
|
||||||
|
drawHead = wrt.top();
|
||||||
|
if (!flag1)
|
||||||
|
drawHead = r;
|
||||||
|
if (!flag2)
|
||||||
|
wrt.setTop(wrt.top() - r);
|
||||||
|
|
||||||
|
if (wrt.top() == r)
|
||||||
|
flOffset = dep1 - sdep;
|
||||||
|
|
||||||
|
//画带头的圆柱
|
||||||
|
if (!flag1 || !flag2)
|
||||||
|
{
|
||||||
|
if (iIndex >= 0)
|
||||||
|
{
|
||||||
|
logio->ReadWave(iIndex, dep1 + flOffset, 1, (void *)value);
|
||||||
|
}
|
||||||
|
else memset(value, 0, m_nSamples*_wave.DepLevel);
|
||||||
|
|
||||||
|
for (int i = 0; i <= nPoint / 2; i++)
|
||||||
|
{
|
||||||
|
drawdep = wrt.top() + r + r * sin(angle*i);
|
||||||
|
flVal = GetData(_wave.RepCode, (char *)&value[(i + ioffset) % nPoint*_wave.CodeLen]);
|
||||||
|
|
||||||
|
if (drawdep > rh - 1)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if (m_flBackVal == flVal)
|
||||||
|
// {
|
||||||
|
// pData[drawdep*nLnBytes + 3 * (i + dis)] = GetBValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
// pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = GetGValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
// pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = GetRValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
{
|
||||||
|
int ii;
|
||||||
|
if (datatype == 0) //线性刻度
|
||||||
|
{
|
||||||
|
ii = 256 * (flVal - m_LeftVal) / (m_RightVal - m_LeftVal);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_LeftVal < 1.0)
|
||||||
|
ii = 256 * (log10(flVal)) / log10(m_RightVal);
|
||||||
|
else
|
||||||
|
ii = 256 * (log10(flVal) - log10(m_LeftVal)) / (log10(m_RightVal) - log10(m_LeftVal));
|
||||||
|
}
|
||||||
|
if (ii > 254) ii = 254;
|
||||||
|
if (ii < 0) ii = 0;
|
||||||
|
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis)] = qRed(rgbList.at(ii));// GetBValue(pColorArr[ii]);
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = qGreen(rgbList.at(ii));// GetGValue(pColorArr[ii]);
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = qBlue(rgbList.at(ii));// GetRValue(pColorArr[ii]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* else //不带头
|
||||||
|
{
|
||||||
|
if (iIndex >= 0)
|
||||||
|
{
|
||||||
|
mrw.ReadWave(iIndex, dep1 - flOffset, 1, (void *)value);
|
||||||
|
}
|
||||||
|
else memset(value, 0, m_nSamples*WaveInfo.DepLevel);
|
||||||
|
|
||||||
|
for (i = 0; i <= nPoint / 2; i++)
|
||||||
|
{
|
||||||
|
drawdep = wrt.top() - r + r * sin(angle*i);
|
||||||
|
|
||||||
|
|
||||||
|
if (drawdep < 0)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
flVal = GetData(WaveInfo.RepCode, (char *)&value[(i + ioffset) % nPoint*WaveInfo.CodeLen]);
|
||||||
|
if (m_flBackVal == flVal)
|
||||||
|
{
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis)] = GetBValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = GetGValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = GetRValue(m_GraInfo.GetBackgroundColour());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int ii;
|
||||||
|
if (datatype == LINEAR) //线性刻度
|
||||||
|
{
|
||||||
|
ii = 256 * (flVal - m_LeftVal) / (m_RightVal - m_LeftVal);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_LeftVal < 1.0)
|
||||||
|
ii = 256 * (log10(flVal)) / log10(m_RightVal);
|
||||||
|
else
|
||||||
|
ii = 256 * (log10(flVal) - log10(m_LeftVal)) / (log10(m_RightVal) - log10(m_LeftVal));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ii > 255) ii = 255;
|
||||||
|
if (ii < 0) ii = 0;
|
||||||
|
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis)] = GetBValue(pColorArr[ii]);
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = GetGValue(pColorArr[ii]);
|
||||||
|
pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = GetRValue(pColorArr[ii]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
int nheight = rh;
|
||||||
|
if (wrt.top() < rh - 1)
|
||||||
|
nheight = (int)(wrt.top() + 0.5);
|
||||||
|
|
||||||
|
long nLnBytes1 = (nPoint * 3 + 3) / 4 * 4;
|
||||||
|
BYTE *pData1 = new BYTE[nLnBytes1*nheight];
|
||||||
|
memcpy(pData1, pData, nLnBytes1*nheight);
|
||||||
|
|
||||||
|
QImage membmp(pData1, nPoint, nheight, 3 * nPoint, QImage::Format_RGB888);
|
||||||
|
QSize qsize;
|
||||||
|
qsize.setWidth(rw - 2);
|
||||||
|
qsize.setHeight(nheight);
|
||||||
|
// 图像缩放
|
||||||
|
QImage result = membmp.scaled(qsize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||||
|
|
||||||
|
if (mPixmap_tx == NULL)
|
||||||
|
{
|
||||||
|
mPixmap_tx = new QCPItemPixmap(this);
|
||||||
|
}
|
||||||
|
//mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
|
||||||
|
mPixmap_tx->topLeft->setCoords(m_iX1, -sdep);
|
||||||
|
mPixmap_tx->bottomRight->setCoords(m_iX2, -edep);
|
||||||
|
mPixmap_tx->setPixmap(QPixmap::fromImage(result));
|
||||||
|
delete[]pData1;
|
||||||
|
delete[]pData;
|
||||||
|
delete[]value;
|
||||||
|
delete logio;
|
||||||
|
this->replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
float QMyCustomPlot::getScaleV()
|
float QMyCustomPlot::getScaleV()
|
||||||
|
|
@ -5687,8 +5921,7 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist)
|
||||||
m_MaxRange = varVal.toDouble();
|
m_MaxRange = varVal.toDouble();
|
||||||
this->changePropertyWaveUpdate();
|
this->changePropertyWaveUpdate();
|
||||||
}
|
}
|
||||||
else if ("色板" == strProperty
|
else if ("色板" == strProperty)
|
||||||
|| "配色方案" == strProperty)
|
|
||||||
{
|
{
|
||||||
this->setSchemeIndex(varVal.toInt(), m_nColorNum);
|
this->setSchemeIndex(varVal.toInt(), m_nColorNum);
|
||||||
}
|
}
|
||||||
|
|
@ -5755,9 +5988,14 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist)
|
||||||
this->changeCurveValSetting();
|
this->changeCurveValSetting();
|
||||||
}
|
}
|
||||||
else if ("最小值" == strProperty
|
else if ("最小值" == strProperty
|
||||||
|| "最大值" == strProperty)
|
|| "最大值" == strProperty
|
||||||
|
|| "三维显示" == strProperty
|
||||||
|
|| "俯视角度" == strProperty
|
||||||
|
|| "显示方位" == strProperty
|
||||||
|
|| "坐标类型" == strProperty
|
||||||
|
|| "配色方案" == strProperty)
|
||||||
{
|
{
|
||||||
this->updateImageWave();
|
this->updateImage(m_fTopY);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->replot();
|
this->replot();
|
||||||
|
|
@ -11042,6 +11280,7 @@ void QMyCustomPlot::setDepthY(float fy1, float fy2)
|
||||||
{
|
{
|
||||||
this->m_iY1 = fy1;
|
this->m_iY1 = fy1;
|
||||||
this->m_iY2 = fy2;
|
this->m_iY2 = fy2;
|
||||||
|
m_fTopY = fy2;
|
||||||
this->yAxis->setRange(m_iY1, m_iY2);
|
this->yAxis->setRange(m_iY1, m_iY2);
|
||||||
|
|
||||||
if (m_bRowGridVisible)
|
if (m_bRowGridVisible)
|
||||||
|
|
@ -11052,6 +11291,7 @@ void QMyCustomPlot::updateDepthY(float fy1, float fy2)
|
||||||
{
|
{
|
||||||
this->m_iY1 = fy1;
|
this->m_iY1 = fy1;
|
||||||
this->m_iY2 = fy2;
|
this->m_iY2 = fy2;
|
||||||
|
m_fTopY = fy2;
|
||||||
//深度改变
|
//深度改变
|
||||||
if (this->m_bX2Y == true)
|
if (this->m_bX2Y == true)
|
||||||
{
|
{
|
||||||
|
|
@ -12474,7 +12714,7 @@ void QMyCustomPlot::addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, co
|
||||||
pLine->setPoints(myPolygon);
|
pLine->setPoints(myPolygon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMyCustomPlot::vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper)
|
void QMyCustomPlot::vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper, int ndepth)
|
||||||
{
|
{
|
||||||
if(m_strUuid==strUuid)
|
if(m_strUuid==strUuid)
|
||||||
{
|
{
|
||||||
|
|
@ -12490,6 +12730,12 @@ void QMyCustomPlot::vertScrollBarChanged_setGeometry(QString strUuid, double val
|
||||||
double dPercent = dDelta / (low-upper);
|
double dPercent = dDelta / (low-upper);
|
||||||
|
|
||||||
setGeometry(0, -(dPercent*geoRect.height()), geoRect.width(), geoRect.height());
|
setGeometry(0, -(dPercent*geoRect.height()), geoRect.width(), geoRect.height());
|
||||||
|
|
||||||
|
if ("DrawImageObject" == m_strType)
|
||||||
|
{
|
||||||
|
m_fTopY = ndepth;
|
||||||
|
updateImage(ndepth);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@ typedef struct FRACTABLE
|
||||||
float X[16],Y[16];//X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9;
|
float X[16],Y[16];//X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9;
|
||||||
}FRAC_TABLE;
|
}FRAC_TABLE;
|
||||||
|
|
||||||
|
class FormInfo;
|
||||||
class FormTrack;
|
class FormTrack;
|
||||||
class FormDraw;
|
class FormDraw;
|
||||||
class TransparentGroupResult;
|
class TransparentGroupResult;
|
||||||
|
|
@ -78,7 +79,7 @@ class QMyCustomPlot : public QCustomPlot
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
QMyCustomPlot(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="");
|
QMyCustomPlot(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="", QString strType = "");
|
||||||
|
|
||||||
virtual ~QMyCustomPlot()
|
virtual ~QMyCustomPlot()
|
||||||
{
|
{
|
||||||
|
|
@ -100,7 +101,10 @@ public:
|
||||||
void setSchemeIndex(int nidx, int colorNum);
|
void setSchemeIndex(int nidx, int colorNum);
|
||||||
|
|
||||||
QCPColorMap * updateWave();
|
QCPColorMap * updateWave();
|
||||||
QCPColorMap * updateImageWave();
|
|
||||||
|
void updateImage(float fTopY);
|
||||||
|
void updateImage(float fTopY, FormInfo* pInfo);
|
||||||
|
void updateImage3D(float fTopY, FormInfo* pInfo);
|
||||||
|
|
||||||
float getScaleV();
|
float getScaleV();
|
||||||
|
|
||||||
|
|
@ -167,12 +171,14 @@ public:
|
||||||
QString m_strWellName;
|
QString m_strWellName;
|
||||||
QString m_strTrackName;
|
QString m_strTrackName;
|
||||||
QString m_strLineName;
|
QString m_strLineName;
|
||||||
|
QString m_strType = "";
|
||||||
|
|
||||||
FormTrack *m_formTrack = NULL;
|
FormTrack *m_formTrack = NULL;
|
||||||
FormDraw *m_formDraw = NULL;
|
FormDraw *m_formDraw = NULL;
|
||||||
//
|
//
|
||||||
float m_iX1, m_iX2;
|
float m_iX1, m_iX2;
|
||||||
float m_iY1, m_iY2;
|
float m_iY1, m_iY2;
|
||||||
|
float m_fTopY = 0; // 显示深度upper
|
||||||
qint8 m_nLeftCross = 0; // 左跨道个数
|
qint8 m_nLeftCross = 0; // 左跨道个数
|
||||||
qint8 m_nRightCross = 0; // 右跨道个数
|
qint8 m_nRightCross = 0; // 右跨道个数
|
||||||
|
|
||||||
|
|
@ -408,6 +414,8 @@ public:
|
||||||
//检查套管组件名称,是否需要更新套管图形
|
//检查套管组件名称,是否需要更新套管图形
|
||||||
bool checkTubingName(QString m_Result);
|
bool checkTubingName(QString m_Result);
|
||||||
|
|
||||||
|
QCPItemPixmap *mPixmap_tx = nullptr; //图像
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
//信号槽刷新
|
//信号槽刷新
|
||||||
void sig_replot();
|
void sig_replot();
|
||||||
|
|
@ -415,7 +423,7 @@ public slots:
|
||||||
void slot_time();
|
void slot_time();
|
||||||
//自定义滚动条
|
//自定义滚动条
|
||||||
void vertScrollBarChanged(QString strUuid, double value, double low, double upper);
|
void vertScrollBarChanged(QString strUuid, double value, double low, double upper);
|
||||||
void vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper);
|
void vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper, int ndepth);
|
||||||
//信号槽刷新
|
//信号槽刷新
|
||||||
void slot_replot();
|
void slot_replot();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user