手动改变道头高度,重新设置2个滚动条位置

This commit is contained in:
jiayulong 2026-06-15 10:57:22 +08:00
parent e53cbe241c
commit 7368b3d2c8
3 changed files with 87 additions and 2 deletions

View File

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

View File

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

View File

@ -146,6 +146,8 @@ public:
void SetNo();
//2个滚动条位置
void SetScrollBar_Geometry();
//手动设置2个滚动条位置
void SetScrollBar_Geometry_ByHand();
public:
//展示所有井