From c95c843a4331f3a3f1926982f01612037b9e7167 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Fri, 13 Mar 2026 09:00:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8B=96=E6=8B=BD=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E9=BC=A0=E6=A0=87=E5=BD=A2=E7=8A=B6=E4=B8=BA=E5=B0=8F?= =?UTF-8?q?=E6=89=8B=E6=88=96=E7=AE=AD=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/TransparentDraggableGeoLith.cpp | 30 +++++ logPlus/TransparentDraggableGeoLith.h | 7 +- logPlus/TransparentDraggableGujing.cpp | 30 +++++ logPlus/TransparentDraggableGujing.h | 4 + logPlus/TransparentDraggableJiegutext.cpp | 30 +++++ logPlus/TransparentDraggableJiegutext.h | 5 + logPlus/TransparentDraggableLayer.cpp | 30 +++++ logPlus/TransparentDraggableLayer.h | 5 + logPlus/TransparentDraggableRect.cpp | 30 +++++ logPlus/TransparentDraggableRect.h | 5 + logPlus/TransparentDraggableSwallCore.cpp | 29 ++++- logPlus/TransparentDraggableSwallCore.h | 5 + logPlus/qmycustomplot.cpp | 130 +++++++++++++++++----- 13 files changed, 311 insertions(+), 29 deletions(-) diff --git a/logPlus/TransparentDraggableGeoLith.cpp b/logPlus/TransparentDraggableGeoLith.cpp index fd24d81..dbac865 100644 --- a/logPlus/TransparentDraggableGeoLith.cpp +++ b/logPlus/TransparentDraggableGeoLith.cpp @@ -773,8 +773,38 @@ void TransparentDraggableGeoLith::onMousePress(QMouseEvent *event) } +int TransparentDraggableGeoLith::getCursor() +{ + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + void TransparentDraggableGeoLith::onMouseMove(QMouseEvent *event) { + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else if (mLeftHandle->selectTest(event->pos(), false) < 5 + || mRightHandle->selectTest(event->pos(), false) < 5) + { + m_bArrow = true; + m_bMoveRect = false; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableGeoLith.h b/logPlus/TransparentDraggableGeoLith.h index 1e713e5..5ce1e05 100644 --- a/logPlus/TransparentDraggableGeoLith.h +++ b/logPlus/TransparentDraggableGeoLith.h @@ -102,7 +102,12 @@ public: QCPRange mDragStartRange; // 添加最小宽度成员变量 - double mMinWidth; + double mMinWidth; + + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLEGEOLITH_H diff --git a/logPlus/TransparentDraggableGujing.cpp b/logPlus/TransparentDraggableGujing.cpp index 3803fdc..a770976 100644 --- a/logPlus/TransparentDraggableGujing.cpp +++ b/logPlus/TransparentDraggableGujing.cpp @@ -498,8 +498,38 @@ void TransparentDraggableGujing::onMousePress(QMouseEvent *event) } +int TransparentDraggableGujing::getCursor() +{ + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + void TransparentDraggableGujing::onMouseMove(QMouseEvent *event) { + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else if (mLeftHandle->selectTest(event->pos(), false) < 5 + || mRightHandle->selectTest(event->pos(), false) < 5) + { + m_bArrow = true; + m_bMoveRect = false; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableGujing.h b/logPlus/TransparentDraggableGujing.h index cea6478..3dccf9d 100644 --- a/logPlus/TransparentDraggableGujing.h +++ b/logPlus/TransparentDraggableGujing.h @@ -88,6 +88,10 @@ public: // 添加最小宽度成员变量 double mMinWidth; + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLEGUJING_H diff --git a/logPlus/TransparentDraggableJiegutext.cpp b/logPlus/TransparentDraggableJiegutext.cpp index d28230c..a9ffc9a 100644 --- a/logPlus/TransparentDraggableJiegutext.cpp +++ b/logPlus/TransparentDraggableJiegutext.cpp @@ -301,8 +301,38 @@ void TransparentDraggableJiegutext::onMousePress(QMouseEvent *event) } +int TransparentDraggableJiegutext::getCursor() +{ + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + void TransparentDraggableJiegutext::onMouseMove(QMouseEvent *event) { + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else if (mLeftHandle->selectTest(event->pos(), false) < 5 + || mRightHandle->selectTest(event->pos(), false) < 5) + { + m_bArrow = true; + m_bMoveRect = false; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableJiegutext.h b/logPlus/TransparentDraggableJiegutext.h index 5270b0d..bdcad7c 100644 --- a/logPlus/TransparentDraggableJiegutext.h +++ b/logPlus/TransparentDraggableJiegutext.h @@ -72,6 +72,11 @@ public: // 添加最小宽度成员变量 double mMinWidth; + + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLEJIEGUTEXT_H diff --git a/logPlus/TransparentDraggableLayer.cpp b/logPlus/TransparentDraggableLayer.cpp index 772601e..503ab54 100644 --- a/logPlus/TransparentDraggableLayer.cpp +++ b/logPlus/TransparentDraggableLayer.cpp @@ -435,8 +435,38 @@ void TransparentDraggableLayer::onMousePress(QMouseEvent *event) } +int TransparentDraggableLayer::getCursor() +{ + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + void TransparentDraggableLayer::onMouseMove(QMouseEvent *event) { + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else if (mLeftHandle->selectTest(event->pos(), false) < 5 + || mRightHandle->selectTest(event->pos(), false) < 5) + { + m_bArrow = true; + m_bMoveRect = false; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableLayer.h b/logPlus/TransparentDraggableLayer.h index da95552..c79e104 100644 --- a/logPlus/TransparentDraggableLayer.h +++ b/logPlus/TransparentDraggableLayer.h @@ -100,6 +100,11 @@ public: // 添加最小宽度成员变量 double mMinWidth; + + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLELAYER_H diff --git a/logPlus/TransparentDraggableRect.cpp b/logPlus/TransparentDraggableRect.cpp index 477adcd..727d205 100644 --- a/logPlus/TransparentDraggableRect.cpp +++ b/logPlus/TransparentDraggableRect.cpp @@ -321,8 +321,38 @@ void TransparentDraggableRect::onMousePress(QMouseEvent *event) } +int TransparentDraggableRect::getCursor() +{ + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + void TransparentDraggableRect::onMouseMove(QMouseEvent *event) { + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else if (mLeftHandle->selectTest(event->pos(), false) < 5 + || mRightHandle->selectTest(event->pos(), false) < 5) + { + m_bArrow = true; + m_bMoveRect = false; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableRect.h b/logPlus/TransparentDraggableRect.h index 688b0d5..102508c 100644 --- a/logPlus/TransparentDraggableRect.h +++ b/logPlus/TransparentDraggableRect.h @@ -92,6 +92,11 @@ public: // 添加最小宽度成员变量 double mMinWidth; + + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLERECT_H diff --git a/logPlus/TransparentDraggableSwallCore.cpp b/logPlus/TransparentDraggableSwallCore.cpp index d1dddd4..c186a3a 100644 --- a/logPlus/TransparentDraggableSwallCore.cpp +++ b/logPlus/TransparentDraggableSwallCore.cpp @@ -524,11 +524,34 @@ void TransparentDraggableSwallCore::onMousePress(QMouseEvent *event) //mDragStartX = x; mDragStartY = y; mDragStartRange = currentRange; +} -} - -void TransparentDraggableSwallCore::onMouseMove(QMouseEvent *event) +int TransparentDraggableSwallCore::getCursor() { + if (m_bMoveRect) + { + return 2; + } + if (m_bArrow) + { + return 1; + } + return 0; +} + +void TransparentDraggableSwallCore::onMouseMove(QMouseEvent *event) +{ + if (mDragMode == DragRect) + { + m_bMoveRect = true; + } + else + { + m_bArrow = false; + m_bMoveRect = false; + } + + //-------------------- if(mDragMode == DragNone) return; event->accept(); diff --git a/logPlus/TransparentDraggableSwallCore.h b/logPlus/TransparentDraggableSwallCore.h index 91aebfc..4f3c77d 100644 --- a/logPlus/TransparentDraggableSwallCore.h +++ b/logPlus/TransparentDraggableSwallCore.h @@ -105,6 +105,11 @@ public: float m_fImageHeight=20;//图片高度(需要根据高度宏定义,重新计算) // float m_fColorWordLen=40;//颜色文字长度 + + //鼠标形状 + bool m_bArrow = false; + bool m_bMoveRect = false; + int getCursor(); }; #endif // TRANSPARENTDRAGGABLESWALLCORE_H diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index e17838a..6be7b08 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -779,31 +779,111 @@ void QMyCustomPlot::mouseMoveEvent(QMouseEvent *event) { QCustomPlot::mouseMoveEvent(event); - int nmaxCursor = 0; - QObjectList objList = m_mapDragGroup.values(); - for( int i = 0; i< objList.size(); i++) - { - TransparentGroupResult* group = qobject_cast(objList.at(i)); - if (group) - { - if (group->getCursor() > nmaxCursor) - { - nmaxCursor = group->getCursor(); - } - } - } - if (nmaxCursor == 2) - { - this->setCursor(Qt::ClosedHandCursor); - } - else if (nmaxCursor == 1) - { - this->setCursor(Qt::SizeVerCursor); - } - else - { - this->setCursor(Qt::ArrowCursor); - } + int nmaxCursor = 0; + //解释结论 + QObjectList objList = m_mapDragGroup.values(); + for( int i = 0; i< objList.size(); i++) + { + TransparentGroupResult* group = qobject_cast(objList.at(i)); + if (group) + { + if (group->getCursor() > nmaxCursor) + { + nmaxCursor = group->getCursor(); + } + } + } + //固井结论 + QObjectList objList_Gujing = m_mapDraggable_Gujing.values(); + for( int i = 0; i< objList_Gujing.size(); i++) + { + TransparentDraggableGujing* tdGujing = qobject_cast(objList_Gujing.at(i)); + if (tdGujing) + { + if (tdGujing->getCursor() > nmaxCursor) + { + nmaxCursor = tdGujing->getCursor(); + } + } + } + //文字结论 + QObjectList objList_Rect = m_mapDraggable_Rect.values(); + for( int i = 0; i< objList_Rect.size(); i++) + { + TransparentDraggableRect* tdRect = qobject_cast(objList_Rect.at(i)); + if (tdRect) + { + if (tdRect->getCursor() > nmaxCursor) + { + nmaxCursor = tdRect->getCursor(); + } + } + } + //地质分层 + QObjectList objList_Layer = m_mapDraggable_Layer.values(); + for( int i = 0; i< objList_Layer.size(); i++) + { + TransparentDraggableLayer* tdLayer = qobject_cast(objList_Layer.at(i)); + if (tdLayer) + { + if (tdLayer->getCursor() > nmaxCursor) + { + nmaxCursor = tdLayer->getCursor(); + } + } + } + //录井剖面 + QObjectList objList_GeoLith = m_mapDraggable_GeoLith.values(); + for( int i = 0; i< objList_GeoLith.size(); i++) + { + TransparentDraggableGeoLith* tdGeoLith = qobject_cast(objList_GeoLith.at(i)); + if (tdGeoLith) + { + if (tdGeoLith->getCursor() > nmaxCursor) + { + nmaxCursor = tdGeoLith->getCursor(); + } + } + } + //井壁取心 + QObjectList objList_SwallCore = m_mapDraggable_SwallCore.values(); + for( int i = 0; i< objList_SwallCore.size(); i++) + { + TransparentDraggableSwallCore* tdSwallCore = qobject_cast(objList_SwallCore.at(i)); + if (tdSwallCore) + { + if (tdSwallCore->getCursor() > nmaxCursor) + { + nmaxCursor = tdSwallCore->getCursor(); + } + } + } + //气测-管柱-文本-FMT-射孔 + QObjectList objList_Jiegutext = m_mapDraggable_Jiegutext.values(); + for( int i = 0; i< objList_Jiegutext.size(); i++) + { + TransparentDraggableJiegutext* tdJiegutext = qobject_cast(objList_Jiegutext.at(i)); + if (tdJiegutext) + { + if (tdJiegutext->getCursor() > nmaxCursor) + { + nmaxCursor = tdJiegutext->getCursor(); + } + } + } + + if (nmaxCursor == 2) + { + this->setCursor(Qt::ClosedHandCursor); + } + else if (nmaxCursor == 1) + { + this->setCursor(Qt::SizeVerCursor); + } + else + { + this->setCursor(Qt::ArrowCursor); + } // if (mMousePress) { // auto items = selectedItems();