diff --git a/logPlus/CallManage.h b/logPlus/CallManage.h index 35685c4..49ad82f 100644 --- a/logPlus/CallManage.h +++ b/logPlus/CallManage.h @@ -178,7 +178,7 @@ signals: void sig_testPlugin(QString strInfo); //鼠标移动,通知状态栏显示深度信息 - void sig_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep); + void sig_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep, float yPos); //鼠标滚动,通知可视解释窗口 void sig_mouseWheel(QWheelEvent *event); @@ -204,6 +204,9 @@ signals: //修改黑白图 void sig_changeBlack(QString strUuid, bool bBlack); + //显示十字线 + void sig_showCrossLine(QString strUuid, bool bShowCross); + void sig_changeWellProperty(QString strUuid, QString strSlfName, QString strWellName, QVariantList listVal); //改变道宽 diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 6cf83c9..6558848 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -59,7 +59,8 @@ FormDraw::FormDraw(QWidget *parent, QString strSlfName, QString strWellName, QSt //改变曲线名 connect(CallManage::getInstance(), SIGNAL(sig_changeLineName(QString, QString, QString, QString, QString, QString)), this, SLOT(s_changeLineName(QString, QString, QString, QString, QString, QString))); - connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, QString, float)), this, SLOT(s_MouseMove(QString, QString, QString, float))); + //鼠标移动 + connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, QString, float, float)), this, SLOT(s_MouseMove(QString, QString, QString, float, float))); //波列 connect(CallManage::getInstance(), SIGNAL(sig_AddWave(QString, QString, QString, QString, QString)), this, SLOT(s_addWave(QString, QString, QString, QString, QString))); connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString)), this, SLOT(s_delWave(QString, QString, QString, QString))); @@ -3903,7 +3904,7 @@ void FormDraw::s_delTableLine(QString strUuid, QString strWellName, QString strT } } -void FormDraw::s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep) +void FormDraw::s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep, float yPos) { //井名&道名不一致 if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName) diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index 31109a5..6df85d3 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -270,7 +270,7 @@ public slots: void s_changeLineName(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strNewLineName); void s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); - void s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep); + void s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep, float yPos); void s_handleRectRangeChange(QCPRange newRange); void s_selectionRectAccepted(const QRect &rect, QMouseEvent *event); diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 8f62e9a..c18d6cb 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -649,6 +649,7 @@ void MainWindowCurve::initMainToolBar() QIcon SaveAsPdfIcon(::GetImagePath()+"icon/ExportPDF.png"); QIcon SaveAsSvgIcon(::GetImagePath()+"icon/ExportSVG.png"); QIcon doubleHeadIcon(::GetImagePath()+"icon/oneortwohead.png"); + QIcon crossIcon(::GetImagePath()+"icon/Cross.png"); QIcon autorollIcon(::GetImagePath()+"icon/autoroll.png"); QIcon blackIcon(::GetImagePath()+"icon/black.png"); QIcon zoominIcon(::GetImagePath()+"icon/zoomin.png"); @@ -668,6 +669,7 @@ void MainWindowCurve::initMainToolBar() m_doubleHeadAc = new QAction(doubleHeadIcon, "单曲线头", this); m_executeDepthShiftAc = new QAction(executeDepthShiftIcon, "校深", this); m_joindepthAc = new QAction(joindepthIcon, "拼接", this); + m_ShowCrossLineAc = new QAction(crossIcon, "显示十字线", this); m_autorollAc = new QAction(autorollIcon, "图像自滚", this); m_PreviewPrintAc = new QAction(blackIcon, "预览图", this); m_ModuleOpenAc = new QAction(ModuleOpenIcon, "处理方法", this); @@ -690,6 +692,7 @@ void MainWindowCurve::initMainToolBar() ui->mainToolBar->addAction(m_doubleHeadAc); //单曲线头 ui->mainToolBar->addAction(m_executeDepthShiftAc); //校深 ui->mainToolBar->addAction(m_joindepthAc); //拼接 + ui->mainToolBar->addAction(m_ShowCrossLineAc); //显示十字线 ui->mainToolBar->addAction(m_autorollAc); //图像自滚 ui->mainToolBar->addAction(m_PreviewPrintAc); //预览图 ui->mainToolBar->addAction(m_ModuleOpenAc); //处理方法 @@ -701,6 +704,7 @@ void MainWindowCurve::initMainToolBar() m_doubleHeadAc->setCheckable(true); //单曲线头 m_executeDepthShiftAc->setCheckable(true); //校深 m_joindepthAc->setCheckable(true); //拼接 + m_ShowCrossLineAc->setCheckable(true); //显示十字线 m_autorollAc->setCheckable(true); //图像自滚 m_PreviewPrintAc->setCheckable(true); //预览图 @@ -719,6 +723,7 @@ void MainWindowCurve::initMainToolBar() connect(m_doubleHeadAc, &QAction::triggered, this, &MainWindowCurve::s_DoubleHead); connect(m_executeDepthShiftAc, &QAction::triggered, this, &MainWindowCurve::s_ExecuteDepthShift); connect(m_joindepthAc, &QAction::triggered, this, &MainWindowCurve::s_ExecuteMerge); + connect(m_ShowCrossLineAc, &QAction::triggered, this, &MainWindowCurve::s_ShowCrossLine); connect(m_autorollAc, &QAction::triggered, this, &MainWindowCurve::s_Autoroll); connect(m_PreviewPrintAc, &QAction::triggered, this, &MainWindowCurve::s_PreviewPrint); connect(m_ModuleOpenAc, &QAction::triggered, this, &MainWindowCurve::s_ModuleOpen); @@ -3051,6 +3056,19 @@ void MainWindowCurve::s_DoubleHead() } +//显示十字线 +void MainWindowCurve::s_ShowCrossLine() +{ + // + bool bShowCross = false; + if(m_ShowCrossLineAc->isChecked()) + { + bShowCross = true; + } + + emit CallManage::getInstance()->sig_showCrossLine(m_strUuid, bShowCross); +} + //图像自滚 void MainWindowCurve::s_Autoroll() { diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index 89ecc27..83aab9e 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -245,6 +245,7 @@ public: QAction* m_doubleHeadAc = nullptr; //单曲线头 QAction* m_executeDepthShiftAc = nullptr; //校深 QAction* m_joindepthAc = nullptr; //拼接 + QAction* m_ShowCrossLineAc = nullptr; //显示十字线 QAction* m_autorollAc = nullptr; //图像自滚 QAction* m_PreviewPrintAc = nullptr; //预览图 QAction* m_ModuleOpenAc = nullptr; //处理方法 @@ -336,6 +337,7 @@ public slots: void s_DoubleHead(); //单曲线头 void s_ExecuteDepthShift(); //校深 void s_ExecuteMerge(); //拼接 + void s_ShowCrossLine(); //显示十字线 void s_Autoroll(); //图像自滚 void s_PreviewPrint(); //预览图 void s_ModuleOpen(); //处理算法 diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 1cd72cc..942f525 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -264,6 +264,11 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel connect(CallManage::getInstance(), SIGNAL(sig_changeMCalsProperty(QString, QString, QString, QString, QString, QString)), this, SLOT(s_changeMCalsProperty(QString, QString, QString, QString, QString, QString))); //黑白图 connect(CallManage::getInstance(), SIGNAL(sig_changeBlack(QString, bool)), this, SLOT(s_changeBlack(QString, bool))); + //显示十字线 + connect(CallManage::getInstance(), SIGNAL(sig_showCrossLine(QString, bool)), this, SLOT(s_showCrossLine(QString, bool))); + //鼠标移动 + connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, QString, float, float)), this, SLOT(s_MouseMove(QString, QString, QString, float, float))); + } void QMyCustomPlot::initGeometry(QString strUuid, int nscale, double fW) @@ -877,7 +882,7 @@ void QMyCustomPlot::mouseMoveEvent(QMouseEvent *event) else y_val = yAxis->pixelToCoord(y_pos); //qDebug() << "MouseMove pixel:" << y_pos << "Y轴: " << y_val; - emit CallManage::getInstance()->sig_MouseMove(m_strUuid, m_strWellName, m_strTrackName, 0-y_val); + emit CallManage::getInstance()->sig_MouseMove(m_strUuid, m_strWellName, m_strTrackName, 0-y_val, y_pos); } } @@ -13392,6 +13397,35 @@ void QMyCustomPlot::Draw_MCals(QString strLineName, QString strNewLineName) this->replot(); } +void QMyCustomPlot::s_showCrossLine(QString strUuid, bool bShowCross) +{ + if(m_strUuid==strUuid) + { + } + else + { + return; + } + if(!m_qcpItemLineCross) + { + //画1条横线 + m_qcpItemLineCross = new QCPItemStraightLine(this); + m_qcpItemLineCross->setPen(QPen(Qt::red, 1)); + } + + m_bShowCross = bShowCross; + if(m_bShowCross) + { + m_qcpItemLineCross->setVisible(true); + } + else + { + m_qcpItemLineCross->setVisible(false); + + replot(); + } +} + void QMyCustomPlot::s_changeBlack(QString strUuid, bool bBlack) { if(m_strUuid==strUuid) @@ -13474,3 +13508,38 @@ void QMyCustomPlot::s_changeBlack(QString strUuid, bool bBlack) // replot(); } + + +void QMyCustomPlot::s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep, float yPos) +{ + //井名&道名不一致 + if(strUuid == m_strUuid) + { + } + else + { + return; + } + + if(m_bShowCross) + { + if (this->m_bX2Y == true) + { + float upper = this->yAxis->range().upper; + float lower = this->yAxis->range().lower; + + m_qcpItemLineCross->point1->setCoords(-dep, lower);//位置 + m_qcpItemLineCross->point2->setCoords(-dep, upper);//位置 + } + else + { + float upper = this->xAxis->range().upper; + float lower = this->xAxis->range().lower; + + m_qcpItemLineCross->point1->setCoords(lower, -dep);//位置 + m_qcpItemLineCross->point2->setCoords(upper, -dep);//位置 + } + + replot(); + } +} diff --git a/logPlus/qmycustomplot.h b/logPlus/qmycustomplot.h index af5d807..18a22b1 100644 --- a/logPlus/qmycustomplot.h +++ b/logPlus/qmycustomplot.h @@ -386,6 +386,9 @@ public: QCPItemPixmap *mPixmap_tx = nullptr; //图像 + //十字线 + QCPItemStraightLine *m_qcpItemLineCross=nullptr; + signals: //信号槽刷新 void sig_replot(); @@ -711,6 +714,11 @@ public slots: //修改黑白图 void s_changeBlack(QString strUuid, bool bBlack); + //显示十字线 + void s_showCrossLine(QString strUuid, bool bShowCross); + //鼠标移动 + void s_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep, float yPos); + public: //蝌蚪图重绘网格线 bool mKedou = false; @@ -807,6 +815,9 @@ public: //黑白图 bool m_bBlack = false; + //十字线 + bool m_bShowCross = false; + private: };