From 427809057947f5d0dbb8fa7506e3e592f0392319 Mon Sep 17 00:00:00 2001 From: "DESKTOP-450PEFP\\mainc" Date: Sat, 18 Apr 2026 13:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E9=81=93=E5=BC=95=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E7=BB=98=E5=88=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/PropertyWidget.cpp | 22 ++++++------- logPlus/formdraw.cpp | 20 +++++++++--- logPlus/formdraw.h | 3 +- logPlus/forminfo.cpp | 8 +++++ logPlus/formwell.cpp | 4 +-- logPlus/qmycustomplot.cpp | 64 +++++++++++++++++++++++++++++++------- logPlus/qmycustomplot.h | 6 ++-- 7 files changed, 95 insertions(+), 32 deletions(-) diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index 33ff254..b1934e5 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -1955,7 +1955,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant bool bhv = false; bool bDraw = false; QStringList slist; - slist << "曲线名称" << "曲线单位" << "曲线刻度" << "单比例连续折返" + slist << "曲线名称" << "曲线单位" << "曲线刻度" << "左跨道个数" << "右跨道个数" << "单比例连续折返" << "线宽" << "颜色" << "线型" << "第二比例大小" << "自动计算二比例" << "绘制左二比例" << "左二比例连续折返" << "左二比例左刻度" << "左二比例右刻度" @@ -2069,16 +2069,16 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant //更新填充 ChangFillProperty(); } - else if ("左跨道个数" == m_propertyData[pProperty]) - { - m_formInfo->m_nLeftCross = variant.toInt(); - emit CallManage::getInstance()->sig_ChangeCross(m_strUuid, m_strTrackUuid); - } - else if ("右跨道个数" == m_propertyData[pProperty]) - { - m_formInfo->m_nRightCross = variant.toInt(); - emit CallManage::getInstance()->sig_ChangeCross(m_strUuid, m_strTrackUuid); - } + //else if ("左跨道个数" == m_propertyData[pProperty]) + //{ + // m_formInfo->m_nLeftCross = variant.toInt(); + // emit CallManage::getInstance()->sig_ChangeCross(m_strUuid, m_strTrackUuid); + //} + //else if ("右跨道个数" == m_propertyData[pProperty]) + //{ + // m_formInfo->m_nRightCross = variant.toInt(); + // emit CallManage::getInstance()->sig_ChangeCross(m_strUuid, m_strTrackUuid); + //} //else if("颜色" == m_propertyData[pProperty]) //{ // //qDebug() << "颜色->改变"; diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 8aaae1e..4aa4036 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -2644,7 +2644,7 @@ void FormDraw::DisplayType_One(QJsonObject objInfo) } -void FormDraw::crossTrackSetting() +void FormDraw::crossTrackSetting(bool bcross) { if (m_formTrack == NULL || m_vecCurv.size() <= 0) return; @@ -2672,8 +2672,9 @@ void FormDraw::crossTrackSetting() } - if (nleft == 0 && nright == 0) + if (nleft == 0 && nright == 0 && !bcross) return; + m_nLeftDao = nleft; for (int i = 0; i < m_vecCurv.size(); i++) { @@ -2699,7 +2700,7 @@ void FormDraw::crossTrackSetting() pCurvPlot->yAxis->setRange(yRange); int nnw = (nleft + nright + 1) * nSingleW; QRect plotRt = pCurvPlot->geometry(); - plotRt.setWidth(nnw); + plotRt.setWidth(nnw-2); pCurvPlot->setGeometry(plotRt); pCurvPlot->replot(); } @@ -2813,7 +2814,13 @@ void FormDraw::paintEvent(QPaintEvent*) } // 右边框 if (m_BorderFlags & RightBorder) { - painter.drawLine(rect.topRight(), rect.bottomRight()); + QPoint pt = rect.topLeft(); + QPoint pt2 = rect.bottomRight(); + // 此处右边界根据道宽绘制 + int ntx = (m_nLeftDao*m_nTrackW * g_dPixelPerCm)+1 + m_nTrackW * g_dPixelPerCm - 2; + pt.setX(ntx); + pt2.setX(ntx); + painter.drawLine(pt, pt2); } painter.restore(); @@ -3144,6 +3151,8 @@ void FormDraw::s_mouseWheel(QWheelEvent *event) void FormDraw::setColWidth(int iNewWidth) { + m_nTrackW = iNewWidth; + iNewWidth = iNewWidth * g_dPixelPerCm; // 获取当前widget的所有子控件 const QObjectList &children = this->children(); //判断为空 @@ -3167,7 +3176,8 @@ void FormDraw::setColWidth(int iNewWidth) if(form) { int dHight = form->geometry().height(); - form->setGeometry(0, 0, iNewWidth, (int)dHight);//7500-3184 + form->initGeometry("", m_iScale, m_nTrackW); + //form->setGeometry(0, 0, iNewWidth, (int)dHight);//7500-3184 if (form->m_strLineName == "RESULT") { form->setConclusionProportion(0); diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index 86932e2..bc9c47e 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -85,7 +85,7 @@ public: void GetTvdProperty(CDrawTvd *drawTvd, QJsonObject lineObjInfo); // 跨道设置 - void crossTrackSetting(); + void crossTrackSetting(bool bcross = false); void setBorderFlags(BorderFlags flags); // 添加绘图 @@ -140,6 +140,7 @@ public: QPen m_zhongPen; int m_ncuGrid = 10; // 粗网格间隔 QPen m_cuPen; + int m_nLeftDao = 0; // 左边跨道个数 QMyCustomPlot *m_curv = NULL; // 曲线列表 diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index 62eede6..117e532 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -1803,6 +1803,14 @@ bool FormInfo::setInfoProperty(QString strProName, QVariant val, QString strGp) { this->m_fWaveHei = val.toInt(); } + else if ("左跨道个数" == strProName) + { + this->m_nLeftCross = val.toInt(); + } + else if ("右跨道个数" == strProName) + { + this->m_nRightCross = val.toInt(); + } else if ("线型" == strProName) { if ("曲线第二比例" == strGp) diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index 79eef5b..247a115 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -380,7 +380,7 @@ void FormWell::s_ChangeCross(QString strUuid, QString strTrackUuid) return; FormDraw *formDraw = qobject_cast(vecWgt.at(2)); - if (formDraw == NULL || formDraw->m_curv == NULL) + if (formDraw == NULL) return; formDraw->crossTrackSetting(); @@ -614,7 +614,7 @@ int FormWell::setColWidth(int iCurrentCol, float fWidth) // pinfo->setGeometry(rt); // } } - formDraw->setColWidth(iNewWidth); + formDraw->setColWidth(fWidth); } } diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 23552d3..84c225f 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -217,7 +217,8 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel void QMyCustomPlot::initGeometry(QString strUuid, int nscale, double fW) { - this->m_strUuid = strUuid; + if (strUuid.length() > 0) + this->m_strUuid = strUuid; double dHight = (m_iY2 - m_iY1)*100.0 / (double)nscale * g_dPixelPerCm; if (g_iShow == 1) @@ -5147,6 +5148,14 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist) { this->setShowProperty(varVal, 5); } + else if ("左跨道个数" == strProperty) + { + m_formDraw->crossTrackSetting(true); + } + else if ("右跨道个数" == strProperty) + { + m_formDraw->crossTrackSetting(true); + } else if ("单比例连续折返" == strProperty) { QCPGraph *graph = this->graph(1); @@ -5804,7 +5813,7 @@ void QMyCustomPlot::s_ChangeLeftScale(QString strUuid, QString strSlfName, QStri m_strLineName == strLineName) { m_iX1 = newLeftScale; - + drawGrid(); double rg = m_iX2 - m_iX1; double lower = m_iX1 - rg * m_nLeftCross; double upper = m_iX2 + rg * m_nRightCross; @@ -5844,7 +5853,7 @@ void QMyCustomPlot::s_ChangeRightScale(QString strUuid, QString strSlfName, QStr m_strLineName == strLineName) { m_iX2 = newRightScale; - + drawGrid(); double rg = m_iX2 - m_iX1; double lower = m_iX1 - rg * m_nLeftCross; double upper = m_iX2 + rg * m_nRightCross; @@ -10263,6 +10272,39 @@ void QMyCustomPlot::setScaleX(float fx1, float fx2) } } +void QMyCustomPlot::drawGrid() +{ + for (int i = 0; i < m_vecColGrid.size(); i++) + { + this->removeItem(m_vecColGrid.at(i)); + } + m_vecColGrid.clear(); + + float fx1 = m_iX1; + float fx2 = m_iX2; + float fabs1 = (fx2 - fx1) / 10.0f; + for (; fx1 < fx2; fx1 += fabs1) + { + QCPItemStraightLine* pGline = new QCPItemStraightLine(this); + pGline->setPen(QPen(QColor(208, 208, 208), 1, Qt::SolidLine)); + if (this->m_bX2Y == true) + { + pGline->point1->setCoords(-1, fx1);//位置 + pGline->point2->setCoords(-2, fx1);//位置 + } + else + { + pGline->point1->setCoords(fx1, -1);//位置 + pGline->point2->setCoords(fx1, -2);//位置 + } + m_vecColGrid << pGline; + + pGline->setLayer("topLayer"); + } + + drawRowGrid(true); +} + void QMyCustomPlot::setDepthY(float fy1, float fy2) { this->m_iY1 = fy1; @@ -10270,7 +10312,7 @@ void QMyCustomPlot::setDepthY(float fy1, float fy2) this->yAxis->setRange(m_iY1, m_iY2); if (m_bRowGridVisible) - drawGrid(); + drawRowGrid(); } void QMyCustomPlot::updateDepthY(float fy1, float fy2) @@ -10290,10 +10332,10 @@ void QMyCustomPlot::updateDepthY(float fy1, float fy2) } if (m_bRowGridVisible) - drawGrid(true); + drawRowGrid(true); } -void QMyCustomPlot::drawGrid(bool b) +void QMyCustomPlot::drawRowGrid(bool b) { for (int i = 0; i < m_vecRowGrid.size(); i++) { @@ -10305,7 +10347,7 @@ void QMyCustomPlot::drawGrid(bool b) int nabs2 = abs(m_iY1); for (; nabs1 < nabs2; nabs1 += 1) { - QCPItemStraightLine* pGline = new QCPItemStraightLine(this); + QCPItemLine* pGline = new QCPItemLine(this); if (nabs1 % m_ncuGrid == 0) // 粗网格 { pGline->setPen(m_cuPen); @@ -10321,13 +10363,13 @@ void QMyCustomPlot::drawGrid(bool b) if (this->m_bX2Y == true && b) { - pGline->point1->setCoords(-nabs1, 1);//位置 - pGline->point2->setCoords(-nabs1, 2);//位置 + pGline->start->setCoords(-nabs1, m_iX1);//位置 + pGline->end->setCoords(-nabs1, m_iX2);//位置 } else { - pGline->point1->setCoords(1, -nabs1);//位置 - pGline->point2->setCoords(2, -nabs1);//位置 + pGline->start->setCoords(m_iX1, -nabs1);//位置 + pGline->end->setCoords(m_iX2, -nabs1);//位置 } pGline->setLayer("topLayer"); m_vecRowGrid << pGline; diff --git a/logPlus/qmycustomplot.h b/logPlus/qmycustomplot.h index 126706e..82bd5f5 100644 --- a/logPlus/qmycustomplot.h +++ b/logPlus/qmycustomplot.h @@ -106,12 +106,14 @@ public: //设置刻度, 绘制网格线 void setScaleX(float fx1, float fx2); + //改变左右刻度更新绘图 + void drawGrid(); //设置深度, 绘制网格线 void setDepthY(float fy1, float fy2); //改变深度更新绘图 void updateDepthY(float fy1, float fy2); //绘制网格 - void drawGrid(bool b = false); + void drawRowGrid(bool b = false); void setRowGridVisible(bool bvis); void setColGridVisible(bool bvis); @@ -236,7 +238,7 @@ public: int m_ncuGrid = 10; // 粗网格间隔 QPen m_cuPen; - QVector m_vecRowGrid; // 细网格 + QVector m_vecRowGrid; // 细网格 QVector m_vecColGrid; // 组