diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index d22b177..be60351 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -22,6 +22,8 @@ extern int g_WorkSpace_Height; extern QString g_strSlfName; extern QString g_strWellName; +extern int g_iLoadingJson; + //井+道名 FormWell::FormWell(QWidget *parent, QString strWellName) : QWidget(parent), @@ -65,6 +67,10 @@ FormWell::FormWell(QWidget *parent, QString strWellName) : ui->tableWidget->verticalScrollBar()->setDisabled(true); // 禁用滚动 ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //隐藏垂直滚动条 + //行高改变 + connect(ui->tableWidget->verticalHeader(), &QHeaderView::sectionResized, this, &FormWell::onSectionResized); + + //关联信号槽 connect(CallManage::getInstance(), SIGNAL(sig_NewTrack(QString, QString, QString, QString, QString,int)), this, SLOT(s_NewTrack(QString, QString, QString, QString, QString,int))); //关联信号槽 @@ -1129,7 +1135,7 @@ void FormWell::vertScrollBarChanged_setGeometry(double value, double low, double } //获取头2行的宽高,方便输出图 -void FormWell::getTableSize_Head_Biggest(int &iHight) +void FormWell::getTableSize_Head_Biggest(int &iHight, int &iHight1, int &iHight2) { //获取可视视图大小 tableWidget iHight = 0; @@ -1146,6 +1152,7 @@ void FormWell::getTableSize_Head_Biggest(int &iHight) } // int iHight_Big = 0; + int iHight_Big_Row2 = 0; int columnCount = ui->tableWidget->columnCount();//总列数 for(int i=0; iiHight_Big) { iHight_Big = iHight_Tmp; + iHight_Big_Row2 = ui->tableWidget->rowHeight(1); } } } @@ -1173,11 +1181,16 @@ void FormWell::getTableSize_Head_Biggest(int &iHight) // if(iHight == 0) { + iHight1 = 100; + iHight2 = m_nObjLyrH; + // iHight = 100 + m_nObjLyrH; } else { - + iHight1 = iHight; + iHight2 = iHight_Big_Row2; + // iHight = iHight + iHight_Big; } } @@ -1317,3 +1330,35 @@ double FormWell::getTrackHeight(FormTrackTop *formTrackTop) return dTrackHeight; } + +//列宽改变 +void FormWell::onSectionResized(int logicalIndex, int oldSize, int newSize) +{ + if(g_iLoadingJson==1)//针对模板加载,不处理列宽改变,避免多次冲突 + { + return; + } + + if(m_bSetRowHeight) //手工设置行高 + { + m_bSetRowHeight = false; //手工设置行高 + return; + } + + //qDebug() << "FormWell onSectionResized, logicalIndex="+ QString::number(logicalIndex) +", newSize="+ QString::number(newSize); + + if(logicalIndex==0) + { + //第一行不允许改变高度 + ui->tableWidget->setRowHeight(0, 100); + } + else if(logicalIndex==1) + { + if(newSize!=0) + { + MainWindowCurve *parent = (MainWindowCurve *)m_parent; + parent->SetScrollBar_Geometry(); + parent->vertScrollBarChanged_Head(0); + } + } +} diff --git a/logPlus/formwell.h b/logPlus/formwell.h index db4ac12..f9e0fd5 100644 --- a/logPlus/formwell.h +++ b/logPlus/formwell.h @@ -68,6 +68,8 @@ public: bool m_bShowTrackHead = true; //显示道头 bool m_bMultiProject = false; //多井的打开工程,使用模板的井名和slf名 + bool m_bSetRowHeight = true; //手工设置行高 + // 道图形 QMap> m_mapFormDraw; @@ -87,7 +89,7 @@ public: //获取当前井的所有道名称 QStringList getTrackNameList(); void getTableSize_Head(int &iHight); - void getTableSize_Head_Biggest(int &iHight);//展开FormIndo后,获取真正的高度最大值 + void getTableSize_Head_Biggest(int &iHight, int &iHight1, int &iHight2);//展开FormIndo后,获取真正的高度最大值 void getRowHeight_Well(int &iHight1, int &iHight2, int &iHight3); void setRowHeight_Well(int iHight1, int iHight2, int iHight3); @@ -123,7 +125,8 @@ public slots: void slotContextMenu(QPoint pos); void slotDeleteSelectTrack(); - + //行高改变 + void onSectionResized(int logicalIndex, int oldSize, int newSize); }; #endif // FORMWELL_H diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index ac4bef1..b3a28b8 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -275,9 +275,9 @@ void MainWindowCurve::s_setRangeVScrollBar2(QString strUuid) { return; } - //自定义滚动条(头) - int iTableSize_Head_Biggest = 0; - getTableSize_Head_Biggest(iTableSize_Head_Biggest); +// //自定义滚动条(头) +// int iTableSize_Head_Biggest = 0; +// getTableSize_Head_Biggest(iTableSize_Head_Biggest); //int iTableWellTrack_height_Biggest = ui->tableWidget_2->rowHeight(0) + (5) + iTableSize_Head_Biggest -1; // ui->verticalScrollBar_2->setRange(0, iTableSize_Head_Biggest-100-100); @@ -344,6 +344,15 @@ void MainWindowCurve::resizeWindow() //2个滚动条位置 void MainWindowCurve::SetScrollBar_Geometry() { + QRect rect2 = ui->centralwidget->geometry(); + int left, top, right, bottom; + if (ui->centralwidget->layout()) + { + ui->centralwidget->layout()->getContentsMargins(&left, &top, &right, &bottom); + } + //可视区域高度 + int iScreenHeight = rect2.height()- top -bottom; + //锁头 if(m_fixwellsectionHeaderAc->isChecked()) { @@ -356,14 +365,19 @@ void MainWindowCurve::SetScrollBar_Geometry() ui->verticalScrollBar_2->setGeometry(geoRect2.x(), geoRect2.y(), geoRect2.width(), iTableWellTrack_height); // QRect geoRect = ui->verticalScrollBar->geometry(); - ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y()+iTableWellTrack_height+2, geoRect.width(), geoRect.height()+geoRect2.height()-iTableWellTrack_height-2); + ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y()+iTableWellTrack_height+2, geoRect.width(), iScreenHeight-iTableWellTrack_height-2); + //ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y()+iTableWellTrack_height+2, geoRect.width(), geoRect.height()+geoRect2.height()-iTableWellTrack_height-2); //自定义滚动条(头) int iTableSize_Head_Biggest = 0; - getTableSize_Head_Biggest(iTableSize_Head_Biggest); + int iTableSize_Head1 = 0; + int iTableSize_Head2 = 0; + getTableSize_Head_Biggest(iTableSize_Head_Biggest, iTableSize_Head1, iTableSize_Head2); //int iTableWellTrack_height_Biggest = ui->tableWidget_2->rowHeight(0) + (5) + iTableSize_Head_Biggest -1; + m_iTableSize_Head2 = iTableSize_Head2; - ui->verticalScrollBar_2->setRange(0, iTableSize_Head_Biggest-100-100); + //ui->verticalScrollBar_2->setRange(0, iTableSize_Head_Biggest - 100 -100); + ui->verticalScrollBar_2->setRange(0, iTableSize_Head_Biggest - iTableSize_Head); ui->verticalScrollBar_2->setValue(0); //connect(ui->verticalScrollBar_2, SIGNAL(valueChanged(int)), this, SLOT(vertScrollBarChanged_Head(int))); } @@ -375,7 +389,8 @@ void MainWindowCurve::SetScrollBar_Geometry() ui->verticalScrollBar_2->setGeometry(geoRect2.x(), geoRect2.y(), geoRect2.width(), 0); // QRect geoRect = ui->verticalScrollBar->geometry(); - ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y(), geoRect.width(), geoRect.height()+geoRect2.height()); + ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y(), geoRect.width(), iScreenHeight); + //ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y(), geoRect.width(), geoRect.height()+geoRect2.height()); // // //获取井well前2行的高度 @@ -497,7 +512,7 @@ void MainWindowCurve::vertScrollBarChanged_Head(int value) { widgetWell->getRowHeight_Well(iHight1, iHight2, iHight3); // - widgetWell->setRowHeight_Well(iHight1, 100+value, iHight3); + widgetWell->setRowHeight_Well(iHight1, m_iTableSize_Head2+value, iHight3); //widgetWell->update(); } } @@ -4427,7 +4442,13 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName, bool bS widgetWell->m_iY2 = m_iY2; widgetWell->m_strUuid = m_strUuid; widgetWell->m_strSlfName = strSlfName; - widgetWell->m_nObjLyrH = m_nObjLayerH; + if(m_iTableSize_Head2>m_nObjLayerH) + { + widgetWell->m_nObjLyrH = m_iTableSize_Head2; //m_nObjLayerH; + } + else{ + widgetWell->m_nObjLyrH = m_nObjLayerH; + } widgetWell->m_nObjDrawH = m_nObjDrawH; widgetWell->m_iScale = m_iScale; widgetWell->setWellHeader(wellH); @@ -4445,6 +4466,9 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName, bool bS } } + //道头滚动条 + //vertScrollBarChanged_Head(0); + //ui->tableWidget_2->resizeColumnsToContents(); // 调整列宽以适应内容 // 设置右键菜单策略 @@ -6445,7 +6469,7 @@ void MainWindowCurve::getTableSize_Head(int &iHight) } } -void MainWindowCurve::getTableSize_Head_Biggest(int &iHight) +void MainWindowCurve::getTableSize_Head_Biggest(int &iHight, int &iHight1, int &iHight2) { //获取可视视图大小 well井 iHight = 0; @@ -6482,10 +6506,14 @@ void MainWindowCurve::getTableSize_Head_Biggest(int &iHight) if(widgetWell) { int iHight_Tmp = 0; - widgetWell->getTableSize_Head_Biggest(iHight_Tmp); + int iHight1_Tmp = 0; + int iHight2_Tmp = 0; + widgetWell->getTableSize_Head_Biggest(iHight_Tmp, iHight1_Tmp, iHight2_Tmp); if(iHight_Tmp>iHight) { iHight = iHight_Tmp; + iHight1 = iHight1_Tmp; + iHight2 = iHight2_Tmp; } } } @@ -6645,7 +6673,9 @@ void MainWindowCurve::ShowTableHead_All() { //展示所有遮挡的FormInfo头 int iTableSize_Head_Biggest = 0; - getTableSize_Head_Biggest(iTableSize_Head_Biggest); + int iTableSize_Head1 = 0; + int iTableSize_Head2 = 0; + getTableSize_Head_Biggest(iTableSize_Head_Biggest, iTableSize_Head1, iTableSize_Head2); // int columnCount = ui->tableWidget_2->columnCount();//总列数 for(int i=0; im_bSetRowHeight = true; //手工设置行高 + + QTableWidget::setRowHeight(row, height); +} diff --git a/logPlus/qmytablewidget.h b/logPlus/qmytablewidget.h index a050f22..9441ff0 100644 --- a/logPlus/qmytablewidget.h +++ b/logPlus/qmytablewidget.h @@ -11,7 +11,8 @@ class QMyTableWidget : public QTableWidget Q_OBJECT public: explicit QMyTableWidget(QWidget *parent = 0); - + void setRowHeight(int row, int height); + protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); @@ -26,6 +27,8 @@ private: void performDrag(); public: + QWidget *m_parent; + QPoint startPos; int m_selectCol;//鼠标选择拖动的位置 int m_hoverCol;