可视解释右键菜单,追加删除井功能

This commit is contained in:
jiayulong 2026-02-10 11:31:56 +08:00
parent 3f3b6c0575
commit bf06d27cae
3 changed files with 102 additions and 76 deletions

View File

@ -55,34 +55,6 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//加载样式
loadStyle(":/qrc/qss/flatgray.css");
//-------------------------------------
ui->tableWidget->hide();
// //隐藏网格线
// ui->tableWidget->setShowGrid(false);
// //设置样式表,不显示竖直边框
// 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->verticalHeader()->hide(); //行
// ui->tableWidget->horizontalHeader()->hide(); //列
// //ui->tableWidget->verticalHeader()->setFixedWidth(3);//标题栏宽度
// //ui->tableWidget->horizontalHeader()->setFixedHeight(3);//标题栏高度
// ui->tableWidget->setColumnCount(1); //动态设置列数
// ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满最后
// //标题
// QTableWidgetItem *headerItem = new QTableWidgetItem("");
// ui->tableWidget->setHorizontalHeaderItem(0, headerItem);
// //我们让一列也可以滑动
// ui->tableWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
// ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
// // 设置右键菜单策略
// ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
// connect(ui->tableWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
// // 在窗口构造函数中
// //ui->tableWidget->installEventFilter(this);
//-------------------------------------
//ui->tableWidget_2->setFrameShape(QFrame::NoFrame); //设置无边框
//隐藏网格线
@ -106,10 +78,10 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
connect(ui->tableWidget_2, SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(onItemClicked(QTableWidgetItem*)));
//-------------------------------------
ui->tableWidget_3->hide();
ui->tableWidget_3->verticalHeader()->hide();
ui->tableWidget_3->horizontalHeader()->hide();
// 设置右键菜单策略
ui->tableWidget_2->setContextMenuPolicy(Qt::CustomContextMenu);
// 连接信号和槽
connect(ui->tableWidget_2, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
connect(this, SIGNAL(sig_NewTrackChangeWidth(QString, int)), this, SLOT(s_NewTrackChangeWidth(QString, int)));
//connect(this, SIGNAL(sig_NewWell(QString, QString)), this, SLOT(s_NewWell(QString, QString)));
@ -161,7 +133,6 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//成果表----------
m_dock2=new QDockWidget(tr(""),this);
m_dock2->setFeatures(QDockWidget::NoDockWidgetFeatures);//QDockWidget::DockWidgetMovable
//dock1->setAllowedAreas(Qt::TopDockWidgetArea);
//
m_formMultiTails = new FormMultiHeads(this);
m_formMultiTails->m_strHeadOrTail = "Tail";
@ -2076,7 +2047,7 @@ QStringList MainWindowCurve::insertCol(int nW)
//井没创建,创建井+道+曲线
//新建井
s_NewWell(strWellName, strSlfName);
m_listWell.push_back(strWellName);
//m_listWell.push_back(strWellName);//重复添加
column= 0;
}
@ -2327,38 +2298,6 @@ void MainWindowCurve::s_showHeadTable()
m_dock1->show();
m_dock2->show();
}
// if(ui->tableWidget->isVisible())
// {
// ui->tableWidget->hide();
// }
// else {
// ui->tableWidget->show();
// }
// QTableWidget *tableWidget = new QTableWidget();
// tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// tableWidget->setRowCount(5);
// tableWidget->setColumnCount(5);
// for(int i=0; i<5; i++)
// {
// //tableWidget->setColumnWidth(i, 100);
// for(int j=0; j<5; j++)
// {
// QTableWidgetItem* item = new QTableWidgetItem("");
// tableWidget->setItem(i, j, item);
// }
// }
//// QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); // 首选大小策略
//// sizePolicy.setHorizontalStretch(0); // 水平拉伸因子
//// sizePolicy.setVerticalStretch(0); // 垂直拉伸因子
//// tableWidget->setSizePolicy(sizePolicy);
// ui->verticalLayout_head->addWidget(tableWidget, 0, Qt::AlignCenter); // 通过布局添加表格
}
QJsonObject MainWindowCurve::makeJson()
@ -2579,7 +2518,7 @@ void MainWindowCurve::s_NewTrack()
//井没创建,创建井+道+曲线
//新建井
s_NewWell(strWellName, strSlfName);
m_listWell.push_back(strWellName);
//m_listWell.push_back(strWellName);//重复添加
column= 0;
}
@ -2644,7 +2583,7 @@ void MainWindowCurve::s_NewDepth()
//井没创建,创建井+道+曲线
//新建井
s_NewWell(strWellName, strSlfName);
m_listWell.push_back(strWellName);
//m_listWell.push_back(strWellName);//重复添加
column= 0;
}
@ -3248,7 +3187,7 @@ void MainWindowCurve::NewWellAndTrack(QString strWellName, QString strSlfName, Q
//井没创建,创建井+道+曲线
//新建井
s_NewWell(strWellName, strSlfName);
m_listWell.push_back(strWellName);
//m_listWell.push_back(strWellName);//重复添加
//新建道+曲线
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, strLineName, strType, nW);
@ -4239,3 +4178,92 @@ void MainWindowCurve::resizeItem(QString strWellName, double colWidth, double ro
}
}
}
void MainWindowCurve::slotContextMenu(QPoint pos)
{
if(ui->tableWidget_2->columnCount()==0)
{
return;
}
int column = ui->tableWidget_2->currentColumn();//列编号从0开始
if(column<0)
{
//当前没有选中井
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
if(column%2==0)
{
}
else
{
//空白列
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
//当前行
int iCurrentRow = ui->tableWidget_2->currentRow();
if(iCurrentRow == 0)
{
QMenu menu(ui->tableWidget_2);
menu.addAction(QIcon(::GetImagePath() + "antialiasing.png"), "删除当前测井图", this, &MainWindowCurve::slotDeleteSelectTrack);
menu.exec(ui->tableWidget_2->mapToGlobal(pos));
}
}
void MainWindowCurve::slotDeleteSelectTrack()
{
int colCount = ui->tableWidget_2->columnCount();
//当前列
int column = ui->tableWidget_2->currentColumn();//列编号从0开始
if(column<0)
{
//当前没有选中井
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
if(column%2==0)
{
}
else
{
//空白列
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
//当前行
int iCurrentRow = ui->tableWidget_2->currentRow();
if(iCurrentRow == 0)
{
if(column==0)
{
if(colCount==1)//只有1口井
{
ui->tableWidget_2->removeColumn(column);
m_listWell.clear();
}
else
{
QString strWellName = ui->tableWidget_2->item(iCurrentRow, column)->text();
m_listWell.removeOne(strWellName);
//
ui->tableWidget_2->removeColumn(column+1);//空白列,注意先删除空白列,否则列号改变
ui->tableWidget_2->removeColumn(column);
}
}
else if(column>1)
{
QString strWellName = ui->tableWidget_2->item(iCurrentRow, column)->text();
m_listWell.removeOne(strWellName);
//
ui->tableWidget_2->removeColumn(column);
ui->tableWidget_2->removeColumn(column-1);//空白列,注意先删除选中列,否则列号改变
}
//resizeWindow();
}
}

View File

@ -77,7 +77,7 @@ public:
QLineEdit *spinbox3;
int m_iScale=200;
double m_iY1=0;
double m_iY1=-1000;
double m_iY2=0;
public:
@ -156,6 +156,10 @@ public slots:
//右键--清除全部分段线
void s_DelAllShiftLine(QString strUuid);
//右键菜单响应函数
void slotContextMenu(QPoint pos);
void slotDeleteSelectTrack();
public slots:
void s_NewWell(QString strWellName, QString strSlfName);//新建井
void s_NewTrackChangeWidth(QString strWellName, int nW=0);//新建道后,改变井宽

View File

@ -17,15 +17,9 @@
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item>
<widget class="QTableWidget" name="tableWidget_2"/>
</item>
<item>
<widget class="QTableWidget" name="tableWidget_3"/>
</item>
</layout>
</item>
</layout>