From 90cf020fc39b2499fca9dbb31bb7aca3ad4ef2c2 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Thu, 25 Jun 2026 09:21:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E5=A4=B4=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E2=80=9C=E5=8F=8C=E5=87=BB=E2=80=9D=E5=BC=B9=E7=AA=97=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/PropertyWidget.cpp | 19 +++++++++++---- logPlus/formhead.cpp | 48 +++++++++++++++++++++++++++++++++++++ logPlus/formhead.h | 3 +++ logPlus/formmultiheads.cpp | 39 ++++++++++++++++++++++++++++++ logPlus/formmultiheads.h | 3 ++- logPlus/formtableitem.cpp | 46 ++++++++++++++++++++++++++++------- logPlus/formtableitem.h | 2 ++ logPlus/mainwindowcurve.cpp | 35 ++++++++++++++++++++------- logPlus/mainwindowcurve.h | 3 ++- 9 files changed, 174 insertions(+), 24 deletions(-) diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index 1d7f3c1..041e2af 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -2348,6 +2348,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant //qDebug() << "列宽(cm)->改变"; double newWidth = variant.value(); m_colWidth = newWidth; + m_item->m_colWidth = newWidth; m_formHead->m_bRefresh=false; //图头项改变 m_tableWidget->setColumnWidth(m_iCol, m_colWidth*g_dPixelPerCm); @@ -2359,6 +2360,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant //qDebug() << "行高(cm)->改变"; double newHight = variant.value(); m_rowHeight = newHight; + m_item->m_rowHeight = newHight; m_formHead->m_bRefresh=false; //图头项改变 m_tableWidget->setRowHeight(m_iRow, m_rowHeight*g_dPixelPerCm); @@ -2367,11 +2369,18 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant } else if("内容" == m_propertyData[pProperty]) { - QString newText = variant.value(); - //qDebug() << "内容->改变" << newText; - m_formHead->m_bRefresh=false; - m_item->m_strShowTxt = newText; - m_item->update(); + if(m_strFormulaText!="") + { + QMessageBox::information(nullptr,"提示","公式状态不可修改,如需修改或删除,请到属性区修改!"); + return; + } + else { + QString newText = variant.value(); + //qDebug() << "内容->改变" << newText; + m_formHead->m_bRefresh=false; + m_item->m_strShowTxt = newText; + m_item->update(); + } } else if("方向" == m_propertyData[pProperty]) { diff --git a/logPlus/formhead.cpp b/logPlus/formhead.cpp index ef13358..830ad8b 100644 --- a/logPlus/formhead.cpp +++ b/logPlus/formhead.cpp @@ -375,6 +375,7 @@ void FormHead::DisplayItems(QJsonArray itemsArray, bool bMultiProject) if (value.isDouble()) { colWidth = value.toDouble(); //qDebug() << "colWidth:" << QString::number(colWidth); + formTableItemTmp->m_colWidth = colWidth; ui->tableWidget->setColumnWidth(col, colWidth*g_dPixelPerCm); } } @@ -385,6 +386,7 @@ void FormHead::DisplayItems(QJsonArray itemsArray, bool bMultiProject) if (value.isDouble()) { rowHeight = value.toDouble(); //qDebug() << "rowHeight:" << QString::number(rowHeight); + formTableItemTmp->m_rowHeight = rowHeight; ui->tableWidget->setRowHeight(row, rowHeight*g_dPixelPerCm); } } @@ -1374,3 +1376,49 @@ void FormHead::onPasteExcelData() // resizeWindow(); } + +void FormHead::getTableSize_Biggest(int &iWidth, int &iHight) +{ + iWidth = 0; + iHight = 0; + + int columnCount = ui->tableWidget->columnCount();//总列数 + int rowCount = ui->tableWidget->rowCount();//总行数 + + for(int col=0; coltableWidget->cellWidget(0, col); + if(myWidget) + { + formTableItemTmp = (FormTableItem*)myWidget;//获得widget + if(!formTableItemTmp) + { + continue; + } + iWidth += formTableItemTmp->m_colWidth * g_dPixelPerCm; + } + else{ + continue; + } + } + + for(int row=0; rowtableWidget->cellWidget(row, 0); + if(myWidget) + { + formTableItemTmp = (FormTableItem*)myWidget;//获得widget + if(!formTableItemTmp) + { + continue; + } + iHight += formTableItemTmp->m_rowHeight * g_dPixelPerCm; + } + else{ + continue; + } + + } +} diff --git a/logPlus/formhead.h b/logPlus/formhead.h index 3999681..5f89e55 100644 --- a/logPlus/formhead.h +++ b/logPlus/formhead.h @@ -53,6 +53,9 @@ public: void resizeEvent(QResizeEvent *event); QJsonObject makeJson(); + //获取表格的实际大小 + void getTableSize_Biggest(int &iWidth, int &iHight); + public slots: void resizeWindow(bool bDelete=false); // diff --git a/logPlus/formmultiheads.cpp b/logPlus/formmultiheads.cpp index c134d61..aa06182 100644 --- a/logPlus/formmultiheads.cpp +++ b/logPlus/formmultiheads.cpp @@ -389,3 +389,42 @@ void FormMultiHeads::getTableSize(int &iWidth, int &iHight) iHight = iHight + 9; //Margin上方 } } + +//获取表格的实际大小 +void FormMultiHeads::getTableSize_Biggest(int &iWidth_Big, int &iHight_Big) +{ + //获取可视视图大小 tableWidget + iHight_Big = 0; + iWidth_Big = 0; + +// int iWidth_Big = 0; +// int iHight_Big = 0; + + int rowCount = ui->tableWidget->rowCount();//总行数 + for(int i=0; itableWidget->cellWidget(i, 0) != nullptr ) + { + auto myWidget = ui->tableWidget->cellWidget(i, 0); + if(myWidget) + { + // + FormHead *widgetHead = (FormHead*)myWidget;//获得widget + if(widgetHead) + { + int iWidth_Tmp = 0; + int iHight_Tmp = 0; + widgetHead->getTableSize_Biggest(iWidth_Tmp, iHight_Tmp); + if(iWidth_Tmp>iWidth_Big) + { + iWidth_Big = iWidth_Tmp; + } + if(iHight_Tmp>iHight_Big) + { + iHight_Big = iHight_Tmp; + } + } + } + } + } +} diff --git a/logPlus/formmultiheads.h b/logPlus/formmultiheads.h index f21a3b5..16fdb51 100644 --- a/logPlus/formmultiheads.h +++ b/logPlus/formmultiheads.h @@ -45,7 +45,8 @@ public: //获取图头、结论的宽高,方便输出图 void getTableSize(int &iWidth, int &iHight); - + //获取表格的实际大小 + void getTableSize_Biggest(int &iWidth, int &iHight); public: QString m_strHeadOrTail = ""; //Head代表图头, Tail代表成果表 }; diff --git a/logPlus/formtableitem.cpp b/logPlus/formtableitem.cpp index 0e17654..48fc709 100644 --- a/logPlus/formtableitem.cpp +++ b/logPlus/formtableitem.cpp @@ -1,6 +1,9 @@ #include "formtableitem.h" #include "ui_formtableitem.h" #include +#include +#include +#include FormTableItem::FormTableItem(QWidget *parent) : QWidget(parent), @@ -54,15 +57,15 @@ void FormTableItem::paintEvent(QPaintEvent* event) QRect rt = rect; QString text = ""; bool bVer = false; - if (!m_bVerticaDrawing) - { - QFontMetrics fm1(m_txtFont); - QRect textRect = fm1.boundingRect(m_strShowTxt); - if (textRect.width() > rt.width()) - { - bVer = true; - } - } +// if (!m_bVerticaDrawing) +// { +// QFontMetrics fm1(m_txtFont); +// QRect textRect = fm1.boundingRect(m_strShowTxt); +// if (textRect.width() > rt.width()) +// { +// bVer = true; +// } +// } if (m_bVerticaDrawing || bVer) { for (int i = 0; i < m_strShowTxt.size(); i++) { @@ -311,3 +314,28 @@ void FormTableItem::DrawBorderLines(QPainter *paint) // paint->restore(); } + + +void FormTableItem::mouseDoubleClickEvent(QMouseEvent *event) +{ + // 检查是否是左键双击 + if (event->button() == Qt::LeftButton) + { + if(m_strFormulaText!="") + { + QMessageBox::information(nullptr,"提示","公式状态不可修改,如需修改或删除,请到属性区修改!"); + return; + } + + bool ok=0; + QString Formtiom=QInputDialog::getText(NULL, "内容编辑", "内容", QLineEdit::Normal,m_strShowTxt,&ok); + if(!ok) return; + + m_strShowTxt = Formtiom; + update(); + } + + + // 其他按钮的双击交给基类处理 + QWidget::mouseDoubleClickEvent(event); +} diff --git a/logPlus/formtableitem.h b/logPlus/formtableitem.h index cec57f2..68141f1 100644 --- a/logPlus/formtableitem.h +++ b/logPlus/formtableitem.h @@ -23,6 +23,8 @@ private: protected: void paintEvent(QPaintEvent *event); + // + void mouseDoubleClickEvent(QMouseEvent *event); public: QPixmap m_pixmap; diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 2f111c2..614a1c9 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -1108,7 +1108,7 @@ void MainWindowCurve::initMainToolBar() connect(m_selectWellAc, &QAction::triggered, this, &MainWindowCurve::s_selectWell); connect(m_hvDraw, &QAction::triggered, this, &MainWindowCurve::s_hvDraw); - connect(m_fixwellsectionHeaderAc, &QAction::triggered, this, &MainWindowCurve::s_showHeadTable); + connect(m_fixwellsectionHeaderAc, &QAction::triggered, this, &MainWindowCurve::s_showHeadTable_ByClick); connect(m_opentemplateAc, &QAction::triggered, this, &MainWindowCurve::s_Open); connect(m_saveastemplateAc, &QAction::triggered, this, &MainWindowCurve::s_Save); connect(m_openMultiProjAc, &QAction::triggered, this, &MainWindowCurve::s_OpenMultiProj); @@ -4486,29 +4486,38 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, QRect geoRect_Tail = m_dock2->geometry(); //判断头宽 int iWidth_Head, iHight_Head; - m_formMultiHeads->getTableSize(iWidth_Head, iHight_Head); + m_formMultiHeads->getTableSize_Biggest(iWidth_Head, iHight_Head); if(iWidth_Head==0 || iHight_Head==0) { } else { - if(geoRect_Head.width()>iMaxWidth) + if(iWidth_Head>iMaxWidth) { - iMaxWidth = geoRect_Head.width(); + iMaxWidth = iWidth_Head; } + +// if(geoRect_Head.width()>iMaxWidth) +// { +// iMaxWidth = geoRect_Head.width(); +// } } //判断尾宽 int iWidth_Tail, iHight_Tail; - m_formMultiTails->getTableSize(iWidth_Tail, iHight_Tail); + m_formMultiTails->getTableSize_Biggest(iWidth_Tail, iHight_Tail); if(iWidth_Tail==0 || iHight_Tail==0) { } else { - if(geoRect_Tail.width()>iMaxWidth) + if(iWidth_Tail>iMaxWidth) { - iMaxWidth = geoRect_Tail.width(); + iMaxWidth = iWidth_Tail; } +// if(geoRect_Tail.width()>iMaxWidth) +// { +// iMaxWidth = geoRect_Tail.width(); +// } } //----------------------------- @@ -5200,6 +5209,17 @@ void MainWindowCurve::s_hvDraw() emit CallManage::getInstance()->sig_ResizeDepth(m_strUuid, m_nObjDrawH, topDep, m_dBottomDepth); } +//显示/隐藏图头(手动点击工具栏) +void MainWindowCurve::s_showHeadTable_ByClick() +{ + s_showHeadTable(); + + if(m_fixwellsectionHeaderAc->isChecked()) + { + QMessageBox::information(NULL,"提示","锁头完成!",QMessageBox::Ok); + } +} + //显示/隐藏图头 void MainWindowCurve::s_showHeadTable() { @@ -5242,7 +5262,6 @@ void MainWindowCurve::s_showHeadTable() ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight + iHScrollBarHeight); ui->verticalScrollBar->setValue(-m_iY2*100); - QMessageBox::information(NULL,"提示","锁头完成!",QMessageBox::Ok); //居中 emit sig_resizeWindow(); } diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index 31c2344..fe36a00 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -377,7 +377,8 @@ public slots: // void s_selectWell(); //选择井 - void s_hvDraw(); //横竖绘制 + void s_hvDraw(); //横竖绘制 + void s_showHeadTable_ByClick(); //显示/隐藏图头 void s_showHeadTable(); //显示/隐藏图头 void s_Open(); //加载图文件 void s_Save(); //保存图文件