From c5de21e9508c6de1288b2d06cb48250003bbfece Mon Sep 17 00:00:00 2001 From: "DESKTOP-450PEFP\\mainc" Date: Wed, 3 Jun 2026 10:09:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A2=E5=88=97=E6=95=B0=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AF=B9=E8=B1=A1=E5=B1=82bug=EF=BC=8C=20?= =?UTF-8?q?=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/CallManage.h | 2 +- logPlus/FormBase.cpp | 8 ++++++++ logPlus/FormBase.h | 3 ++- logPlus/formdraw.cpp | 34 ++++++++++++++++++++++++++++++---- logPlus/formdraw.h | 2 +- logPlus/forminfo.cpp | 2 +- logPlus/formtrack.cpp | 15 ++++++++------- logPlus/formtrack.h | 6 +++--- logPlus/formwave.cpp | 2 +- logPlus/formwave.h | 2 +- logPlus/mainwindowcurve.cpp | 5 +++-- logPlus/preqtablewidget.cpp | 2 +- logPlus/qmycustomplot.cpp | 26 ++++++++++++++++++++++---- logPlus/qmycustomplot.h | 2 ++ 14 files changed, 84 insertions(+), 27 deletions(-) diff --git a/logPlus/CallManage.h b/logPlus/CallManage.h index 49ad82f..1a58bfe 100644 --- a/logPlus/CallManage.h +++ b/logPlus/CallManage.h @@ -109,7 +109,7 @@ signals: //新建波列 void sig_AddWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName); //删除波列 - void sig_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); + void sig_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid); //新建表格曲线 void sig_AddTableLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName); diff --git a/logPlus/FormBase.cpp b/logPlus/FormBase.cpp index 8bca258..de3b684 100644 --- a/logPlus/FormBase.cpp +++ b/logPlus/FormBase.cpp @@ -42,6 +42,14 @@ void FormBase::paintEvent(QPaintEvent* event) int b = rect.bottom(); int l = rect.left(); int r = rect.right(); + if (m_nbleft > 0) + { + l = m_nbleft; + } + if (m_nbright > 0) + { + r = m_nbright; + } // 上边框 if (m_BorderFlags & TopBorder) { painter.drawLine(l, t + nbw / 2, r, t + nbw / 2); diff --git a/logPlus/FormBase.h b/logPlus/FormBase.h index ad7f2cf..1ee1e37 100644 --- a/logPlus/FormBase.h +++ b/logPlus/FormBase.h @@ -35,7 +35,8 @@ public: bool m_press;//判断鼠标是否按下 BorderFlags m_BorderFlags; FormWell* m_pFormWell = NULL; - + int m_nbleft = 0; + int m_nbright = 0; }; diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 6558848..96556d1 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -63,7 +63,7 @@ FormDraw::FormDraw(QWidget *parent, QString strSlfName, QString strWellName, QSt 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))); + connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString, QString)), this, SLOT(s_delWave(QString, QString, QString, QString, QString))); //表格 connect(CallManage::getInstance(), SIGNAL(sig_AddTableLine(QString, QString, QString, QString, QString)), this, SLOT(s_addTableLine(QString, QString, QString, QString, QString))); connect(CallManage::getInstance(), SIGNAL(sig_delTableLine(QString, QString, QString, QString)), this, SLOT(s_delTableLine(QString, QString, QString, QString))); @@ -168,6 +168,7 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo) pwave->setDepthY(m_iY1, m_iY2); pwave->initGeometry(m_strUuid, m_iScale, dW, m_nObjDrawH); pwave->m_formTrack = m_formTrack; + pwave->m_strObjUuid = pInfo->m_strObjUuid; pwave->show(); } else if ("DrawImageObject" == strType) @@ -3063,6 +3064,14 @@ void FormDraw::crossTrackSetting(bool bcross) selfRt.setWidth((nleft + nright + 1)*nSingleW); this->setGeometry(selfRt); + m_nbleft = 0; + m_nbright = 0; + if (nleft > 0 || nright > 0) { + m_nbleft = nleft * nSingleW; + m_nbright = m_nbleft + nSingleW; + } +// if (nright > 0) +// m_nbright = (nright + 1)*nSingleW; } void FormDraw::addCusPlot(QMyCustomPlot* plot) @@ -3567,10 +3576,12 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam nW = g_iOneWidth; bool bDraw = true; + QString strObjUuid = ""; if (bDraw) { FormWave *pwave = new FormWave(this, strSlfName, strWellName, strTrackName, strWaveName); pwave->setDepthY(m_iY1, m_iY2); + strObjUuid = pwave->m_strObjUuid; pwave->initGeometry(m_strUuid, m_iScale, nW, m_nObjDrawH); pwave->m_formTrack = m_formTrack; pwave->show(); @@ -3599,7 +3610,7 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam double width=2; QString strScaleType = ""; //道-对象 - m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strWaveName, strAliasName, strUnit, newlineColor, width, _nSamples, 0, strScaleType, "waveObject"); + m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strWaveName, strAliasName, strUnit, newlineColor, width, _nSamples, 0, strScaleType, "waveObject", QStringList(), strObjUuid); } @@ -3802,7 +3813,7 @@ void FormDraw::s_delLine(QString strUuid, QString strWellName, QString strTrackN } -void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName) +void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString objUuid) { //井名&道名不一致 if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName) @@ -3833,7 +3844,22 @@ void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackN // 打印子控件的信息,使用缩进表示层级关系 //qDebug() << QString("%1").arg(childWidget->objectName()); QString strObjName = childWidget->objectName(); - if(strObjName=="QMyCustomPlot") + if (strObjName == "FormWave") + { + FormWave *form = (FormWave*)childWidget; + if (form->m_strObjUuid == objUuid) + { + childWidget->deleteLater(); // 安排控件的删除,稍后执行 + m_listLineName.removeOne(strLineName); + + //属性清空 + PropertyService()->InitCurrentViewInfo(); + + //取消所有选中单元格 + emit CallManage::getInstance()->sig_Raise(m_strUuid, "", "", "", "", 0, ""); + } + } + else if(strObjName=="QMyCustomPlot") { QMyCustomPlot *form = (QMyCustomPlot*)childWidget; if(form->m_strLineName == strLineName) diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index 6df85d3..75deb65 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -308,7 +308,7 @@ public slots: // void s_addWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName); - void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); + void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString objUuid); // void s_addTableLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName); diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index 4a117f5..977e768 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -3185,7 +3185,7 @@ void FormInfo::onShowWave() void FormInfo::onDeleteWave() { //删除Wave - emit CallManage::getInstance()->sig_delWave(m_strUuid, m_strWellName, m_strTrackName, m_strLineName); + emit CallManage::getInstance()->sig_delWave(m_strUuid, m_strWellName, m_strTrackName, m_strLineName, m_strObjUuid); //重新设置滚动条范围 emit CallManage::getInstance()->sig_setRangeVScrollBar2(m_strUuid); } diff --git a/logPlus/formtrack.cpp b/logPlus/formtrack.cpp index 142a3c7..059f032 100644 --- a/logPlus/formtrack.cpp +++ b/logPlus/formtrack.cpp @@ -69,10 +69,10 @@ FormTrack::FormTrack(QWidget *parent, QString strSlfName, QString strWellName, Q this, SLOT(s_delTableLine(QString, QString, QString, QString))); //波列 - connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)), - this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString))); - connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString)), - this, SLOT(s_delWave(QString, QString, QString, QString))); + connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QString)), + this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QString))); + connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString, QString)), + this, SLOT(s_delWave(QString, QString, QString, QString, QString))); // 深度 connect(this, SIGNAL(sig_AddDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)), this, SLOT(s_addDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString))); @@ -280,7 +280,7 @@ void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackNam } else if(strType=="waveObject") { - emit sig_AddWave(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType); + emit sig_AddWave(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType, strObjUuid); } else if(strType=="tableObject") { @@ -651,7 +651,7 @@ void FormTrack::s_delTableLine(QString strUuid, QString strWellName, QString str } } -void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType) +void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid) { qDebug() << "FormTrack s_addWave"; @@ -666,6 +666,7 @@ void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTr //波列信息栏 FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor); formInfo->m_strUuid = m_strUuid; + formInfo->m_strObjUuid = strObjUuid; formInfo->m_strAliasName = strAliasName; formInfo->m_strUnit = strUnit; formInfo->m_strScaleType = strScaleType; @@ -692,7 +693,7 @@ void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTr emit CallManage::getInstance()->sig_setRangeVScrollBar2(m_strUuid); } -void FormTrack::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName) +void FormTrack::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid) { //井名&道名不一致 if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName) diff --git a/logPlus/formtrack.h b/logPlus/formtrack.h index 71c6b85..cbfe21c 100644 --- a/logPlus/formtrack.h +++ b/logPlus/formtrack.h @@ -71,7 +71,7 @@ public: signals: void sig_AddLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid = ""); - void sig_AddWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType); + void sig_AddWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid); void sig_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid=""); void sig_AddDepth(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType); @@ -93,8 +93,8 @@ public slots: void s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid=""); void s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); - void s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType); - void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); + void s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid); + void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid); void s_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid=""); void s_delTableLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName); diff --git a/logPlus/formwave.cpp b/logPlus/formwave.cpp index ce411b5..040b429 100644 --- a/logPlus/formwave.cpp +++ b/logPlus/formwave.cpp @@ -19,7 +19,7 @@ FormWave::FormWave(QWidget *parent, QString strSlfName, QString strWellName, QSt m_strWellName = strWellName; m_strTrackName = strTrackName; m_strLineName = strLineName; - + m_strObjUuid = getUUid(); QString path = GetConfPath() + "selfcolorrank.ini"; FILE*fp = fopen(path.toStdString().c_str(), "rt"); if (fp) diff --git a/logPlus/formwave.h b/logPlus/formwave.h index e155c76..6db14b1 100644 --- a/logPlus/formwave.h +++ b/logPlus/formwave.h @@ -58,7 +58,7 @@ public: QString m_strWellName; QString m_strTrackName; QString m_strLineName; - + QString m_strObjUuid = ""; QWidget *m_parent; FormTrack *m_formTrack = NULL; diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 034a19a..3e7ed17 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -690,6 +690,7 @@ void MainWindowCurve::initMainToolBar() ui->mainToolBar->addAction(m_SaveAsPdfAc); //导出PDF ui->mainToolBar->addAction(m_SaveAsSvgAc); //导出SVG ui->mainToolBar->addSeparator(); + ui->mainToolBar->addAction(m_ModuleOpenAc); //处理方法 ui->mainToolBar->addAction(m_blackAc); //黑白图 ui->mainToolBar->addAction(m_doubleHeadAc); //单曲线头 ui->mainToolBar->addAction(m_executeDepthShiftAc); //校深 @@ -700,7 +701,7 @@ void MainWindowCurve::initMainToolBar() ui->mainToolBar->addSeparator(); // ui->mainToolBar->addAction(m_wellTopAlignAc); //井顶对齐 - ui->mainToolBar->addAction(m_ModuleOpenAc); //处理方法 + // 设置为可选中 m_fixwellsectionHeaderAc->setCheckable(true); //锁头 @@ -4942,7 +4943,7 @@ void MainWindowCurve::s_NewMCals() return; //新建井+道+曲线(首条) - NewWellAndTrack(sret.at(0), sret.at(1), "FCA2", "MCalsObject"); + NewWellAndTrack(sret.at(0), sret.at(1), "WTDD", "MCalsObject"); } //套管组件 diff --git a/logPlus/preqtablewidget.cpp b/logPlus/preqtablewidget.cpp index 3feb147..3674132 100644 --- a/logPlus/preqtablewidget.cpp +++ b/logPlus/preqtablewidget.cpp @@ -600,7 +600,7 @@ void PreQTableWidget::performDrag() else if(strType=="waveObject") { //删除波列 - emit CallManage::getInstance()->sig_delWave(m_strUuid, formInfo->m_strWellName, formInfo->m_strTrackName, formInfo->m_strLineName); + emit CallManage::getInstance()->sig_delWave(m_strUuid, formInfo->m_strWellName, formInfo->m_strTrackName, formInfo->m_strLineName, formInfo->m_strObjUuid); } else if(strType=="tableObject") { diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 942f525..365d5ef 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -1165,12 +1165,12 @@ void QMyCustomPlot::contextMenuEvent(QContextMenuEvent *event) QMenu menu(this); if (!m_bEditor) { - menu.addAction(QIcon(::GetImagePath() + "curve.png"), "开始编辑岩心图片", this, &QMyCustomPlot::onOpenEditResult); + menu.addAction(QIcon(::GetImagePath() + "curve.png"), "开始编辑岩心图片", this, &QMyCustomPlot::onOpenEditImage); } else { menu.addAction(QIcon(::GetImagePath() + "curve.png"), "增加", this, &QMyCustomPlot::onEditImage); - menu.addAction(QIcon(::GetImagePath() + "curve.png"), "关闭编辑岩心图片", this, &QMyCustomPlot::onCloseEditResult); + menu.addAction(QIcon(::GetImagePath() + "curve.png"), "关闭编辑岩心图片", this, &QMyCustomPlot::onCloseEditImage); menu.addAction(QIcon(::GetImagePath() + "icon/CopyCoreTxt.png"), "从剪切板文本数据粘贴", this, &QMyCustomPlot::addItemsImage); menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "全部清空", this, &QMyCustomPlot::clearItemsImage); menu.addAction(QIcon(::GetImagePath() + "icon/ClearSelectCore.png"), "设置深度移动量", this, &QMyCustomPlot::setImageDepth); @@ -4427,6 +4427,26 @@ void QMyCustomPlot::MegResult_Gujing() RefreshItems_Gujing(); } +void QMyCustomPlot::onOpenEditImage() +{ + m_bEditor = true; + this->selectionRect()->setPen(Qt::NoPen); + this->setInteractions(QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables | QCP::iMultiSelect); // 轴、图例、图表可以被选择,并且是多选的方式 + this->setSelectionRectMode(QCP::srmSelect); // 鼠标框选 + + onEditImage(); +} + +void QMyCustomPlot::onCloseEditImage() +{ + ClearSelectItems(); + m_bEditor = false; + //取消框选 + this->setInteractions(QCP::iSelectLegend | QCP::iSelectPlottables); + this->setSelectionRectMode(QCP::srmNone); + this->setCursor(Qt::ArrowCursor); +} + //加载固井slf数据 bool QMyCustomPlot::LoadFromSLF_Gujing(QString strSlfName, QString strLineName) { @@ -8866,8 +8886,6 @@ void QMyCustomPlot::onOpenEditResult() this->selectionRect()->setPen(Qt::NoPen); this->setInteractions(QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables | QCP::iMultiSelect); // 轴、图例、图表可以被选择,并且是多选的方式 this->setSelectionRectMode(QCP::srmSelect); // 鼠标框选 - - onEditImage(); } void QMyCustomPlot::onCloseEditResult() diff --git a/logPlus/qmycustomplot.h b/logPlus/qmycustomplot.h index 18a22b1..cae0bbb 100644 --- a/logPlus/qmycustomplot.h +++ b/logPlus/qmycustomplot.h @@ -548,6 +548,8 @@ public slots: void MegResult_Gujing(); //合并结论 //右键--编辑岩心照片 + void onOpenEditImage(); + void onCloseEditImage(); void onEditImage(); void addItemsImage(); //从剪切板文本数据粘贴 void clearItemsImage(); //全部清空