From a82d904835c9bf67d17c15765be062e6a3236a74 Mon Sep 17 00:00:00 2001 From: jiayulong <22806282@qq.com> Date: Thu, 12 Feb 2026 14:12:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BA=E4=BA=95=E7=BB=93=E8=AE=BA=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=A1=B9=E7=9A=84=E5=B1=9E=E6=80=A7=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9=E9=A1=B6?= =?UTF-8?q?=E6=B7=B1=E3=80=81=E5=BA=95=E6=B7=B1=E3=80=81=E5=9B=BA=E4=BA=95?= =?UTF-8?q?=E7=BB=93=E8=AE=BA=E5=9B=BE=E7=89=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/PropertyWidget.cpp | 95 ++++++++++++++++++++++++++ logPlus/PropertyWidget.h | 10 +++ logPlus/TransparentDraggableGujing.cpp | 57 +++++++++++++++- logPlus/TransparentDraggableGujing.h | 6 ++ logPlus/formdraw.cpp | 4 +- logPlus/forminfo.cpp | 4 +- logPlus/forminfo.h | 2 + 7 files changed, 173 insertions(+), 5 deletions(-) diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index 838272d..a649196 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -78,6 +78,8 @@ void PropertyWidget::InitCurrentViewInfo(bool bAll) m_formHead = NULL; m_tableWidget = NULL; m_item = NULL; + m_tdGujing = NULL; + // m_strUuid = ""; m_strSlfName = ""; m_strWellName = ""; @@ -168,6 +170,64 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant } return; } + else if (m_strCurrentProperty == Table_Property) + { + if("显示名称" == m_propertyData[pProperty]) + { + QString newAliasName = variant.value(); + m_formInfo->m_strAliasName = newAliasName; + m_formInfo->update(); + } + else if("字体" == m_propertyData[pProperty]) + { + //字体 + // 假设variant已经被设置为包含QColor + QFont newFont = variant.value(); + m_formInfo->m_curveNameFont = newFont; + m_formInfo->update(); + } + else if("颜色" == m_propertyData[pProperty]) + { + QColor newColor = variant.value(); + m_formInfo->m_lineColor = newColor; + m_formInfo->update(); + } + } + else if (m_strCurrentProperty == GujingItem_Property) + { + //固井结论item + if("顶深(m)" == m_propertyData[pProperty]) + { + //qDebug() << "顶深(m)->改变"; + if(m_tdGujing) + { + double upper = variant.value(); + m_tdGujing->setUpper(-upper); + } + } + else if("底深(m)" == m_propertyData[pProperty]) + { + //qDebug() << "底深(m)->改变"; + if(m_tdGujing) + { + double lower = variant.value(); + m_tdGujing->setLower(-lower); + } + } + else if("固井结论" == m_propertyData[pProperty]) + { + //qDebug() << "固井结论->改变"; + if(m_tdGujing) + { + QString newResult = variant.value(); + m_tdGujing->setResult(newResult); + // + QCPRange currentRange = m_tdGujing->getRange(); + m_tdGujing->setRange(currentRange.lower, currentRange.upper); + } + } + } + if("深度比例尺" == m_propertyData[pProperty]) { //qDebug() << "深度比例尺->改变"; @@ -1218,6 +1278,16 @@ void PropertyWidget::initProperty(FormInfo *formInfo) { this->initWaveProperty(formInfo, formInfo->m_nDrawType); } + else if (formInfo->m_strType == "tableObject") + { + if (m_strLineName == "GUJING1_RESULT" || m_strLineName == "GUJING2_RESULT" || m_strLineName == "GUJING3_RESULT") + { + //固井结论 + this->initGujingProperty(formInfo); + } + + + } } void PropertyWidget::initRoseProperty(FormInfo *formInfo) @@ -1337,3 +1407,28 @@ void PropertyWidget::initWaveProperty(FormInfo *formInfo, int nType) m_strCurrentProperty = Wave_Property; } +void PropertyWidget::initGujingProperty(FormInfo *formInfo) +{ + _CreateVariantPropertyItem("通常", "选择井曲线", m_strLineName + "@" + m_strSlfName, QVariant::String); + + _CreateVariantPropertyItem("对象", "显示名称", formInfo->m_strAliasName, QVariant::String); + _CreateVariantPropertyItem("对象", "字体", formInfo->m_curveNameFont, QVariant::Font); + _CreateVariantPropertyItem("对象", "颜色", formInfo->m_lineColor, QVariant::Color); + + m_strCurrentProperty = Table_Property; +} + +void PropertyWidget::initGujingItemProperty(TransparentDraggableGujing* tdGujing, double lower, double upper, QString strResult) +{ + //初始化,清空 + InitCurrentViewInfo(); + + //当前属性类型 + m_strCurrentProperty = GujingItem_Property; + m_tdGujing = tdGujing; + + // + _CreateVariantPropertyItem("当前项", "顶深(m)", -upper, QVariant::Double); + _CreateVariantPropertyItem("当前项", "底深(m)", -lower, QVariant::Double); + _CreateVariantPropertyItem("当前项", "固井结论", strResult, VariantManager::filePathTypeId()); +} diff --git a/logPlus/PropertyWidget.h b/logPlus/PropertyWidget.h index 666b463..556feb8 100644 --- a/logPlus/PropertyWidget.h +++ b/logPlus/PropertyWidget.h @@ -20,6 +20,7 @@ #include "formhead.h" #include "qmytablewidget.h" #include "formtracktop.h" +#include "TransparentDraggableGujing.h" //当前曲线类型 #define Widget_Property "Widget_Property" @@ -27,7 +28,9 @@ #define Track_Property "Track_Property" //道 #define Curve_Property "Curve_Property" //曲线 #define Wave_Property "Wave_Property" //波列 +#define Table_Property "Table_Property" //表格曲线 #define Head_Property "Head_Property" //图头,单元格 +#define GujingItem_Property "GujingItem_Property" //固井item #pragma execution_character_set("utf-8") @@ -91,6 +94,10 @@ public: int m_iCurrentCol; bool m_bSelfChange=false; + + // + TransparentDraggableGujing* m_tdGujing; + public: QWidget* GetPropertyWidget(); @@ -118,6 +125,9 @@ public: void initRoseProperty(FormInfo *formInfo); // 波列属性 void initWaveProperty(FormInfo *formInfo, int nType = 3); + // 固井结论属性 + void initGujingProperty(FormInfo *formInfo); + void initGujingItemProperty(TransparentDraggableGujing* tdGujing, double lower, double upper, QString strResult); void ChangFillProperty();//填充属性改变 diff --git a/logPlus/TransparentDraggableGujing.cpp b/logPlus/TransparentDraggableGujing.cpp index 51a3063..78c5595 100644 --- a/logPlus/TransparentDraggableGujing.cpp +++ b/logPlus/TransparentDraggableGujing.cpp @@ -1,4 +1,6 @@ #include "TransparentDraggableGujing.h" +#include "PropertyWidget.h" +#include "CallManage.h" extern double g_dPixelPerCm;//每厘米像素数 //static GeoIndicatorGenerator m_drawGeo; @@ -311,6 +313,48 @@ void TransparentDraggableGujing::onDelRect() deleteRect(); } +//设置顶深 +void TransparentDraggableGujing::setUpper(double upper) +{ + QCPRange currentRange = getRange(); + QCPRange newRange = currentRange; + + double proposedRight = upper; + // 确保不超出轴范围且不使宽度小于最小值 + newRange.upper = qBound( + currentRange.lower + mMinWidth, + proposedRight, + getMyUpper()); + + // 最终确保宽度不小于最小值(针对整体拖动的情况) + if(newRange.size() < mMinWidth) { + newRange.upper = newRange.lower + mMinWidth; + } + + setRange(newRange.lower, newRange.upper); +} + +//设置底深 +void TransparentDraggableGujing::setLower(double lower) +{ + QCPRange currentRange = getRange(); + QCPRange newRange = currentRange; + + double proposedLeft = lower; + // 确保不超出轴范围且不使宽度小于最小值 + newRange.lower = qBound( + getMyLower(), + proposedLeft, + currentRange.upper - mMinWidth); + + // 最终确保宽度不小于最小值(针对整体拖动的情况) + if(newRange.size() < mMinWidth) { + // 如果是边界拖动,强制设置最小宽度 + newRange.lower = newRange.upper - mMinWidth; + } + + setRange(newRange.lower, newRange.upper); +} void TransparentDraggableGujing::onMousePress(QMouseEvent *event) { @@ -371,7 +415,7 @@ void TransparentDraggableGujing::onMousePress(QMouseEvent *event) } //else if(x >= currentRange.lower && x <= currentRange.upper) { else if(y >= currentRange.lower && y <= currentRange.upper) { - mDragMode = DragRect; + mDragMode = DragRect; } else { mDragMode = DragNone; @@ -486,6 +530,16 @@ void TransparentDraggableGujing::onMouseRelease(QMouseEvent *event) { if(event->button() == Qt::LeftButton && mDragMode != DragNone) { event->accept(); + //属性 + //if(mDragMode == DragRect) + { + double low = mRect->topLeft->coords().x(); + double hight = mRect->bottomRight->coords().x(); + PropertyService()->initGujingItemProperty(this, low, hight, m_Result); + //取消所有选中单元格 + emit CallManage::getInstance()->sig_Raise(mPlot->m_strUuid, "", "", "", "", 1, ""); + } + //避免二次绘制框图 mPlot->m_bDrawRect = false; //emit rangeChanged(getRange()); @@ -499,6 +553,7 @@ void TransparentDraggableGujing::onMouseRelease(QMouseEvent *event) mPlot->selectionRect()->cancel(); mPlot->replot(); mPlot->selectionRect()->mActive=true; + } } diff --git a/logPlus/TransparentDraggableGujing.h b/logPlus/TransparentDraggableGujing.h index a41d651..f87a027 100644 --- a/logPlus/TransparentDraggableGujing.h +++ b/logPlus/TransparentDraggableGujing.h @@ -45,6 +45,11 @@ public: // 删除框图 void deleteRect(); + //设置顶深 + void setUpper(double upper); + //设置底深 + void setLower(double lower); + signals: void rangeChanged(QCPRange newRange); @@ -80,6 +85,7 @@ private: // 添加最小宽度成员变量 double mMinWidth; + }; #endif // TRANSPARENTDRAGGABLEGUJING_H diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 40a83c7..eb61f24 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -4021,7 +4021,7 @@ void FormDraw::initGujing(QMyCustomPlot *widget, QString strSlfName, QString str // LoadFromSLF_Gujing(widget, strSlfName, strLineName); - QString strAliasName = ""; + QString strAliasName = "固井结论"; QString strUnit = ""; QColor newlineColor=QColor(0,0,0); double width=2; @@ -4075,7 +4075,7 @@ bool FormDraw::LoadFromSLF_Gujing(QMyCustomPlot *widget, QString strSlfName, QSt int NO = m_Result->NO; float SDEP = m_Result->SDEP; float EDEP = m_Result->EDEP; - int RESULT = m_Result->RESULT; + int iRESULT = m_Result->RESULT; QString result = ""; // diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index 292586a..0a13dd7 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -388,7 +388,7 @@ void FormInfo::paintEvent(QPaintEvent* event) else if(m_strLineName == "GUJING1_RESULT" || m_strLineName == "GUJING2_RESULT" || m_strLineName == "GUJING3_RESULT") { //固井结论,不绘制左右范围 - painter.drawText(rect.left(), rect.top()+rect.height()/3, rect.width(), rect.height()/3 ,Qt::AlignCenter, "固井结论"); + //painter.drawText(rect.left(), rect.top()+rect.height()/3, rect.width(), rect.height()/3 ,Qt::AlignCenter, "固井结论"); } else if(m_strLineName=="CORE_PHYSICS") { @@ -411,7 +411,7 @@ void FormInfo::paintEvent(QPaintEvent* event) if(m_strType=="tableObject" && (m_strLineName=="WORDS_RELUST" || m_strLineName == "RESULT" || m_strLineName == "GEO_LITH"|| m_strLineName == "SWALL_CORE" || m_strLineName == "GUJING1_RESULT" || m_strLineName == "GUJING2_RESULT" || m_strLineName == "GUJING3_RESULT" - || m_strLineName == "CORE_PHYSICS") ) + || m_strLineName == "CORE_PHYSICS" || m_strLineName == "IMAGE_DATA") ) { } diff --git a/logPlus/forminfo.h b/logPlus/forminfo.h index 47f27dc..13d390b 100644 --- a/logPlus/forminfo.h +++ b/logPlus/forminfo.h @@ -116,6 +116,8 @@ public: int m_nColorNum = 256; // 调色板参数设置-变密度颜色级数 int m_nSchemeIndex = 1; // 调色板参数设置-色板 + //固井 + public: void setLineWidth(double dWidth); double getLineWidth();