diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index 6152c17..4d50caf 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -1357,8 +1357,9 @@ void FormWell::onSectionResized(int logicalIndex, int oldSize, int newSize) if(newSize!=0) { MainWindowCurve *parent = (MainWindowCurve *)m_parent; - parent->SetScrollBar_Geometry(); - parent->vertScrollBarChanged_Head(0); + // + parent->SetScrollBar_Geometry_ByHand(); + //parent->vertScrollBarChanged_Head(0); } } } diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 860fd9a..5ea2e64 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -355,6 +355,85 @@ void MainWindowCurve::resizeWindow() //update(); } +//手动设置2个滚动条位置 +void MainWindowCurve::SetScrollBar_Geometry_ByHand() +{ + 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()) + { + //获取井well前2行的高度 + //int iTableSize_Head = 100 + m_nObjLayerH; + int iTableSize_Head = 0; + getTableSize_Head(iTableSize_Head); + int iTableWellTrack_height = ui->tableWidget_2->rowHeight(0) + (5) + iTableSize_Head -1; + + QRect geoRect2 = ui->verticalScrollBar_2->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(), iScreenHeight-iTableWellTrack_height-2); + + //自定义滚动条(头) + int iTableSize_Head_Biggest = 0; + int iTableSize_Head1 = 0; + int iTableSize_Head2 = 0; + getTableSize_Head_Biggest(iTableSize_Head_Biggest, iTableSize_Head1, iTableSize_Head2); + m_iTableSize_Head2 = iTableSize_Head2; + m_nObjLayerH = m_iTableSize_Head2; + + ui->verticalScrollBar_2->setRange(0, iTableSize_Head_Biggest - iTableSize_Head); + ui->verticalScrollBar_2->setValue(0); + + //重置滚动条范围值setRange--------------------- + //可视区域高度 + iScreenHeight = 0; + //锁头 + if(m_fixwellsectionHeaderAc->isChecked()) + { + iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale; + } + else{ + iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale; + } + //下方滚动条高度 + int iHScrollBarHeight = 0; + if(!ui->tableWidget_2->horizontalScrollBar()->isVisible()) + { + iHScrollBarHeight = 0; + } + else + { + iHScrollBarHeight = ui->tableWidget_2->horizontalScrollBar()->height()/g_dPixelPerCm * m_iScale; + } + ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight + iHScrollBarHeight); + ui->verticalScrollBar->setValue(-m_iY2*100); + + //道头部滚动条归0 + vertScrollBarChanged_Head(0); + } + else + { + ui->verticalScrollBar_2->setValue(0); + + //替换为高度0,不然居中处理失效 + QRect geoRect2 = ui->verticalScrollBar_2->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(), iScreenHeight); + //ui->verticalScrollBar->setGeometry(geoRect.x(), geoRect2.y(), geoRect.width(), geoRect.height()+geoRect2.height()); + } +} + //2个滚动条位置 void MainWindowCurve::SetScrollBar_Geometry() { @@ -3755,6 +3834,8 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, m_PreviewPrintAc->setChecked(true); //切换回锁头模式 m_fixwellsectionHeaderAc->setChecked(true); + //锁头 + s_showHeadTable(); //全部显示道头,方便抓拍道头 ShowTableHead_All(); @@ -4477,6 +4558,7 @@ void MainWindowCurve::s_showHeadTable() { //恢复原始数据,不然容易造成道头过大 m_iTableSize_Head2 = 104; + m_nObjLayerH = m_iTableSize_Head2; //显示道头/对象头 ShowTableHead(); diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index f10a696..2cc3a36 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -146,6 +146,8 @@ public: void SetNo(); //2个滚动条位置 void SetScrollBar_Geometry(); + //手动设置2个滚动条位置 + void SetScrollBar_Geometry_ByHand(); public: //展示所有井