表格边框隐藏,曲线追加鼠标滚动后,可视解释窗口上下滚动处理

This commit is contained in:
jiayulong 2025-11-05 14:03:27 +08:00
parent f6a1c49c5d
commit d30053b9c4
13 changed files with 147 additions and 14 deletions

View File

@ -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);

View File

@ -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<QWidget *>(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<QWidget *>(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";
// 可以在这里更新鼠标的位置,根据位置判断是否可以放置
// ...

View File

@ -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;

View File

@ -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

View File

@ -1,6 +1,7 @@
#include "formtrack.h"
#include "ui_formtrack.h"
#include <QDebug>
#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);
// //

View File

@ -3,6 +3,7 @@
#include <QWidget>
#include "forminfo.h"
#include <QStyledItemDelegate>
#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

View File

@ -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)
{
//判断当前井是否与自己同名

View File

@ -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

View File

@ -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) :

View File

@ -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()
{

View File

@ -38,6 +38,9 @@ public slots:
//图头
void copy();
void Paste();
//鼠标滚动,通知可视解释窗口
void s_mouseWheel(QWheelEvent *event);
public:
QString m_strUuid;
QStringList m_listWell;

View File

@ -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+1<count)
{
@ -481,8 +500,15 @@ void QMyCustomPlot::s_ChangeFillMode(QString strUuid, QString strSlfName, QStrin
float y1 = (m_iX2-m_iX1)*(val[i+1]-vMin)/(vMax-vMin) + m_iX1;
//读取基线
float BaseY1=0;
float BaseY1_Tmp=0;
logio->ReadCurve(indexBaseCurv, 0-x1, 1, &BaseY1);
// if(m_strScaleType=="对数")
// {
// BaseY1_Tmp=log(BaseY1);
// BaseY1 = BaseY1_Tmp;
// }
if(BaseY0<=y0 && BaseY1<=y1)
{
//基线在左,采用基线值

View File

@ -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;//岩性背景色