From d30053b9c480021e86c0f33157460f6809869398 Mon Sep 17 00:00:00 2001 From: jiayulong <22806282@qq.com> Date: Wed, 5 Nov 2025 14:03:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E8=BE=B9=E6=A1=86=E9=9A=90?= =?UTF-8?q?=E8=97=8F=EF=BC=8C=E6=9B=B2=E7=BA=BF=E8=BF=BD=E5=8A=A0=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E6=BB=9A=E5=8A=A8=E5=90=8E=EF=BC=8C=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E8=A7=A3=E9=87=8A=E7=AA=97=E5=8F=A3=E4=B8=8A=E4=B8=8B=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CallManage/CallManage.h | 3 +++ logPlus/formdraw.cpp | 15 +++++++++++---- logPlus/formdraw.h | 2 ++ logPlus/forminfo.cpp | 5 +++-- logPlus/formtrack.cpp | 31 +++++++++++++++++++++++++++++++ logPlus/formtrack.h | 36 ++++++++++++++++++++++++++++++++++++ logPlus/formwell.cpp | 10 +++++++++- logPlus/formwell.h | 2 ++ logPlus/mainwindow.cpp | 2 +- logPlus/mainwindowcurve.cpp | 14 ++++++++++++++ logPlus/mainwindowcurve.h | 3 +++ logPlus/qmycustomplot.cpp | 36 +++++++++++++++++++++++++++++++----- logPlus/qmycustomplot.h | 2 +- 13 files changed, 147 insertions(+), 14 deletions(-) diff --git a/CallManage/CallManage.h b/CallManage/CallManage.h index 08d954c..7514d96 100644 --- a/CallManage/CallManage.h +++ b/CallManage/CallManage.h @@ -73,6 +73,9 @@ signals: //鼠标移动,通知状态栏显示深度信息 void sig_MouseMove(QString strUuid, QString strWellName, QString strTrackName, float dep); + //鼠标滚动,通知可视解释窗口 + void sig_mouseWheel(QWheelEvent *event); + // //void sig_addImageToPlot(QMyCustomPlot* customPlot, double left_Low, double right_Hight, QString imagePath); diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 183ec92..893557a 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -189,6 +189,8 @@ AppendConsole(PAI_INFO, "FormDraw s_AddLine_Property"); initForm(curv, strSlfName, strLineName, newLeftScale, newRightScale, lineColor, width, lineStyle); + connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*))); + // m_listLineName.push_back(strLineName); @@ -196,6 +198,11 @@ AppendConsole(PAI_INFO, "FormDraw s_AddLine_Property end"); } +void FormDraw::s_mouseWheel(QWheelEvent *event) +{ + emit CallManage::getInstance()->sig_mouseWheel(event); +} + void FormDraw::s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName) { //井名&道名不一致 @@ -225,7 +232,7 @@ void FormDraw::s_delLine(QString strUuid, QString strWellName, QString strTrackN // 判断子控件是否为QWidget类型 if (QWidget *childWidget = qobject_cast(child)) { // 打印子控件的信息,使用缩进表示层级关系 - qDebug() << QString("%1").arg(childWidget->objectName()); + //qDebug() << QString("%1").arg(childWidget->objectName()); QString strObjName = childWidget->objectName(); if(strObjName=="QMyCustomPlot") { @@ -251,7 +258,7 @@ void FormDraw::s_MouseMove(QString strUuid, QString strWellName, QString strTrac { return; } - qDebug() << "FormDraw s_MouseMove"; + //qDebug() << "FormDraw s_MouseMove"; // QString sss=" depth:"+QString::number(dep); @@ -264,7 +271,7 @@ void FormDraw::s_MouseMove(QString strUuid, QString strWellName, QString strTrac // 判断子控件是否为QWidget类型 if (QWidget *childWidget = qobject_cast(child)) { // 打印子控件的信息,使用缩进表示层级关系 - qDebug() << QString("%1").arg(childWidget->objectName()); + //qDebug() << QString("%1").arg(childWidget->objectName()); QString strObjName = childWidget->objectName(); if(strObjName=="QMyCustomPlot") { @@ -660,7 +667,7 @@ void FormDraw::dragEnterEvent(QDragEnterEvent* event) void FormDraw::dragMoveEvent(QDragMoveEvent* event) { - qDebug() << "FormDraw dragMoveEvent"; + //qDebug() << "FormDraw dragMoveEvent"; // 可以在这里更新鼠标的位置,根据位置判断是否可以放置 // ... diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index f1288b5..3bbdc4a 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -33,6 +33,8 @@ public slots: void dragEnterEvent(QDragEnterEvent* event); void dragMoveEvent(QDragMoveEvent* event); void dropEvent(QDropEvent* event); + // + void s_mouseWheel(QWheelEvent *event); public: QString m_strUuid; diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index 81c2d12..9cba3cf 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -138,9 +138,10 @@ void FormInfo::paintEvent(QPaintEvent* event) } } //painter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); - QRect rectRound(rect.left()+2,rect.top()+4, rect.width()-3, rect.height()-4); + QRect rectRound(rect.left()+2,rect.top()+4, rect.width()-4, rect.height()-8); painter.setPen(QPen(m_lineColor, m_dWidth, m_lineStyle)); - painter.drawRoundRect(rectRound);//利用画刷(颜色/岩性图片),画框 + //painter.drawRoundRect(rectRound);//利用画刷(颜色/岩性图片),画框 + painter.drawRect(rectRound); painter.setBrush(Qt::NoBrush); // 确保文字不被填充色遮挡 QFont font1("微软雅黑", 10, false, false); //fontSize 10 diff --git a/logPlus/formtrack.cpp b/logPlus/formtrack.cpp index b4aba70..61bdc72 100644 --- a/logPlus/formtrack.cpp +++ b/logPlus/formtrack.cpp @@ -1,6 +1,7 @@ #include "formtrack.h" #include "ui_formtrack.h" #include +#include "CallManage.h" //曲线名称栏(表格) FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) : @@ -12,6 +13,16 @@ FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) m_strWellName = strWellName; m_strTrackName = strTrackName; + //单元格委托 + //m_delegate = new NoLRBorderDelegate(); + //隐藏网格线 + ui->tableWidget->setShowGrid(false); + //设置样式表,竖直边框宽度为0,隐藏 + ui->tableWidget->setStyleSheet( "QTableView::item {border-left: 0px solid black;} \ + QTableView::item:selected {border-left: 0px solid black;}\ + QTableView::item {border-right: 0px solid black;} \ + QTableView::item:selected {border-right: 0px solid black;}"); + //表格绑定井名,道名 ui->tableWidget->m_strWellName = strWellName; ui->tableWidget->m_strTrackName = strTrackName; @@ -31,6 +42,23 @@ FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) connect(this, SIGNAL(sig_AddLine(QString, QString, QString, QString, QColor, double, float, float)), this, SLOT(s_addLine(QString, QString, QString, QString, QColor, double, float, float))); + //曲线选中,置顶 + connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString))); + +} + +void FormTrack::s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) +{ + if(m_strUuid == strUuid && + m_strWellName == strWellName && + m_strTrackName == strTrackName) + { + // + } + else { + //取消表格选中状态 + ui->tableWidget->clearSelection(); + } } FormTrack::~FormTrack() @@ -64,9 +92,12 @@ void FormTrack::s_addLine(QString strSlfName, QString strWellName, QString strTr formInfo->setBackColor(QColor(255,255,255)); //设置高度 ui->tableWidget->setRowHeight(row, 100); + //单元格委托 + //ui->tableWidget->setItemDelegateForRow(row, m_delegate); // ui->tableWidget->setCellWidget(row, 0, formInfo); + //------------------------------------ // QFont font("微软雅黑", 10, QFont::Bold, false); // // diff --git a/logPlus/formtrack.h b/logPlus/formtrack.h index e27da40..c8b3297 100644 --- a/logPlus/formtrack.h +++ b/logPlus/formtrack.h @@ -3,6 +3,7 @@ #include #include "forminfo.h" +#include #pragma execution_character_set("utf-8") @@ -10,6 +11,36 @@ namespace Ui { class FormTrack; } +//class NoLRBorderDelegate : public QStyledItemDelegate +//{ +//public: +// void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override +// { +// // 获取原始矩形大小 +// QRect rect = option.rect; + +// // 修改矩形大小,去除左右边框 +// rect.setX(rect.x()+3); +// rect.setWidth(rect.width()-4); +// //rect.setWidth(0); +// rect.setY(rect.y()+4); +// rect.setHeight(rect.height()-7); + + +// // 构造新的选项 +// QStyleOptionViewItem newOption(option); +// newOption.rect = rect; + +// // 绘制单元格内部内容 +// QStyledItemDelegate::paint(painter, newOption, index); + +// // 绘制上下边框线 +//// painter->setPen(QPen(Qt::gray)); +//// painter->drawLine(option.rect.topLeft(), option.rect.topRight()); +//// painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); +// } +//}; + class FormTrack : public QWidget { Q_OBJECT @@ -25,6 +56,8 @@ public: QString m_strUuid; QString m_strWellName; QString m_strTrackName; + // 创建自定义单元格委托 + //NoLRBorderDelegate *m_delegate; public: void Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor, double dWidth, float vmax, float vmin); @@ -36,6 +69,9 @@ signals: public slots: void s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor, double dWidth, float vmax, float vmin); + void s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName); + }; + #endif // FORMTRACK_H diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index 7e6ee04..4fd71a1 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -29,7 +29,8 @@ FormWell::FormWell(QWidget *parent, QString strWellName) : //关联信号槽 connect(CallManage::getInstance(), SIGNAL(sig_NewTrack_No_Line(QString, QString, QString)), this, SLOT(s_NewTrack_No_Line(QString, QString, QString))); - //s_NewTrack(m_strWellName); + //曲线选中,置顶 + connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString))); } FormWell::~FormWell() @@ -37,6 +38,13 @@ FormWell::~FormWell() delete ui; } +void FormWell::s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) +{ + //选中了曲线置顶 + //取消表格选中状态 + ui->tableWidget->clearSelection(); +} + void FormWell::s_NewTrack(QString strUuid, QString strWellName, QString strSlfName, QString strLineName) { //判断当前井是否与自己同名 diff --git a/logPlus/formwell.h b/logPlus/formwell.h index 6e64c65..bacd8d5 100644 --- a/logPlus/formwell.h +++ b/logPlus/formwell.h @@ -33,6 +33,8 @@ public slots: void s_NewTrack(QString strUuid, QString strWellName, QString strSlfName, QString strLineName); //新建空白道,没有曲线 void s_NewTrack_No_Line(QString strUuid, QString strWellName, QString strTrackName); + + void s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName); }; #endif // FORMWELL_H diff --git a/logPlus/mainwindow.cpp b/logPlus/mainwindow.cpp index a0c48fb..00c3d37 100644 --- a/logPlus/mainwindow.cpp +++ b/logPlus/mainwindow.cpp @@ -39,7 +39,7 @@ int g_iY1 = -3000; int g_iY2 = 0; int g_iCanZoom = 0; -int g_iScale = 300; +int g_iScale = 1000; QString g_prjname=""; MainWindow::MainWindow(QWidget *parent) : diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 5437600..7842b3d 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -83,6 +83,7 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) : connect(this, SIGNAL(sig_NewTrackChangeWidth(QString)), this, SLOT(s_NewTrackChangeWidth(QString))); connect(this, SIGNAL(sig_NewWell(QString)), this, SLOT(s_NewWell(QString))); + connect(CallManage::getInstance(), SIGNAL(sig_mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*))); } MainWindowCurve::~MainWindowCurve() @@ -90,6 +91,19 @@ MainWindowCurve::~MainWindowCurve() delete ui; } +//鼠标滚动,通知可视解释窗口 +void MainWindowCurve::s_mouseWheel(QWheelEvent *event) +{ + if (event->angleDelta().y() > 0) { + ui->tableWidget_2->verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub); // 向下滚动 + } else { + ui->tableWidget_2->verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd); // 向上滚动 + } + + //verticalScrollBar() horizontalScrollBar() + //event->accept(); // 确保事件被处理 +} + //初始化工具栏 void MainWindowCurve::initMainToolBar() { diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index 78b4472..2880349 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -38,6 +38,9 @@ public slots: //图头 void copy(); void Paste(); + + //鼠标滚动,通知可视解释窗口 + void s_mouseWheel(QWheelEvent *event); public: QString m_strUuid; QStringList m_listWell; diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 52a31b8..689c596 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -33,6 +33,7 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel //刻度类型 connect(CallManage::getInstance(), SIGNAL(sig_ChangeScaleType(QString, QString, QString, QString, QString, QString)), this, SLOT(s_ChangeScaleType(QString, QString, QString, QString, QString, QString))); + //曲线选中,置顶 connect(CallManage::getInstance(), SIGNAL(sig_Raise(QString, QString, QString, QString, QString)), this, SLOT(s_Raise(QString, QString, QString, QString, QString))); //颜色 connect(CallManage::getInstance(), SIGNAL(sig_ChangeLineColor(QString, QString, QString, QString, QString, QColor)), this, SLOT(s_ChangeLineColor(QString, QString, QString, QString, QString, QColor))); @@ -239,14 +240,15 @@ void QMyCustomPlot::s_ChangeScaleType(QString strUuid, QString strSlfName, QStri { m_strScaleType = strScaleType; - if(m_strScaleType=="线性") - { - yAxis->setScaleType(QCPAxis::stLinear); - } - else if(m_strScaleType=="对数") + if(m_strScaleType=="对数") { yAxis->setScaleType(QCPAxis::stLogarithmic); } + else //if(m_strScaleType=="线性") + { + yAxis->setScaleType(QCPAxis::stLinear); + } + // replot(); } @@ -426,6 +428,16 @@ void QMyCustomPlot::s_ChangeFillMode(QString strUuid, QString strSlfName, QStrin { if(newFillMode=="左填充") { +// if(m_strScaleType=="对数") +// { +// float iX1_Tmp=log(m_iX1); +// m_iX1 = iX1_Tmp; +// // + +// float iX2_Tmp=log(m_iX2); +// m_iX2 = iX2_Tmp; +// } + //其他曲线(左填充) CLogIO *logio=new CLogIO(); logio->Open(strSlfName.toStdString().c_str(),CSlfIO::modeRead); @@ -472,7 +484,14 @@ void QMyCustomPlot::s_ChangeFillMode(QString strUuid, QString strSlfName, QStrin //读取基线 float BaseY0=0; + float BaseY0_Tmp=0; logio->ReadCurve(indexBaseCurv, 0-x0, 1, &BaseY0); +// if(m_strScaleType=="对数") +// { +// BaseY0_Tmp=log(BaseY0); +// BaseY0 = BaseY0_Tmp; +// } + // if(i+1ReadCurve(indexBaseCurv, 0-x1, 1, &BaseY1); +// if(m_strScaleType=="对数") +// { +// BaseY1_Tmp=log(BaseY1); +// BaseY1 = BaseY1_Tmp; +// } + if(BaseY0<=y0 && BaseY1<=y1) { //基线在左,采用基线值 diff --git a/logPlus/qmycustomplot.h b/logPlus/qmycustomplot.h index aacfbdd..7396c48 100644 --- a/logPlus/qmycustomplot.h +++ b/logPlus/qmycustomplot.h @@ -38,7 +38,7 @@ public: QString m_newHeadFill; float m_vMin; float m_vMax; - QString m_strScaleType;//刻度类型(线性,对数) + QString m_strScaleType="线性";//刻度类型(线性,对数) QColor m_frontColor;//岩性前景色 QColor m_backColor;//岩性背景色