优化“非锁头”状态的滚动条处理换页逻辑,避免下方出现空白
This commit is contained in:
parent
b16ac1f407
commit
e2a136d4d9
|
|
@ -478,7 +478,7 @@ void MainWindowCurve::resizeEvent(QResizeEvent *event)
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
|
|
@ -585,9 +585,31 @@ void MainWindowCurve::vertScrollBarChanged(int iValue)
|
|||
iHeightOfScreen = g_iHeight_MyCustom;
|
||||
}
|
||||
|
||||
double dScrollHeight = (iHeightOfScreen-g_WorkSpace_Height)/g_dPixelPerCm/100.0 * (double)m_iScale;
|
||||
|
||||
QRect rect2 = ui->centralwidget->geometry();
|
||||
int left, top, right, bottom;
|
||||
if (ui->centralwidget->layout())
|
||||
{
|
||||
ui->centralwidget->layout()->getContentsMargins(&left, &top, &right, &bottom);
|
||||
}
|
||||
//获取井well前2行的高度
|
||||
int iTableSize_Head = 0;
|
||||
getTableSize_Head(iTableSize_Head);
|
||||
int iTableWellTrack_height = ui->tableWidget_2->rowHeight(0) + (5) + iTableSize_Head -1;
|
||||
//可视区域高度
|
||||
int 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;
|
||||
}
|
||||
//double dScrollHeight = (iHeightOfScreen-g_WorkSpace_Height)/g_dPixelPerCm/100.0 * (double)m_iScale;
|
||||
double dScrollHeight_setGeometry = iHeightOfScreen/g_dPixelPerCm/100.0 * (double)m_iScale;
|
||||
|
||||
double dScreenHeightMi = (double)iScreenHeight/100.0;
|
||||
double dScrollHeight = dScrollHeight_setGeometry - dScreenHeightMi;
|
||||
//
|
||||
double dDelta = value - upper;
|
||||
int iNumShow = dDelta/dScrollHeight;
|
||||
|
|
@ -597,7 +619,7 @@ void MainWindowCurve::vertScrollBarChanged(int iValue)
|
|||
}
|
||||
if(m_iCurPage == iNumShow)
|
||||
{
|
||||
double iCurValue = dDelta - (iNumShow-1)*dScrollHeight;
|
||||
double iCurValue = dDelta - (double)(iNumShow-1)*dScrollHeight;
|
||||
//锁头
|
||||
if(m_fixwellsectionHeaderAc->isChecked())
|
||||
{
|
||||
|
|
@ -617,32 +639,6 @@ void MainWindowCurve::vertScrollBarChanged(int iValue)
|
|||
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue, dScrollHeight_setGeometry, 0, value);
|
||||
}
|
||||
}
|
||||
// int columnCount = ui->tableWidget_2->columnCount();//总列数
|
||||
// for(int i=0; i<columnCount; i++)
|
||||
// {
|
||||
// if(i%2==0)
|
||||
// {
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //空白列
|
||||
// continue;
|
||||
// }
|
||||
// //
|
||||
// if( ui->tableWidget_2->cellWidget(1, i) != nullptr )
|
||||
// {
|
||||
// auto myWidget = ui->tableWidget_2->cellWidget(1, i);
|
||||
// if(myWidget)
|
||||
// {
|
||||
// //
|
||||
// FormWell *widgetWell = (FormWell*)myWidget;//获得widget
|
||||
// if(widgetWell)
|
||||
// {
|
||||
// widgetWell->vertScrollBarChanged_setGeometry(iCurValue, dScrollHeight_setGeometry, 0);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
else if(iNumShow>0)
|
||||
{
|
||||
|
|
@ -658,19 +654,26 @@ void MainWindowCurve::vertScrollBarChanged(int iValue)
|
|||
{
|
||||
//隐藏道头/对象头
|
||||
HideTableHead();
|
||||
|
||||
//通过原始的滚动条归位,不然下方容易出现空白
|
||||
ui->tableWidget_2->verticalScrollBar()->setValue(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//显示道头/对象头
|
||||
ShowTableHead();
|
||||
ShowTableHead_All();
|
||||
|
||||
double iCurValueTmp = dDelta - (double)(iNumShow-1)*dScrollHeight;
|
||||
//通过原始的滚动条,整体滚动
|
||||
ui->tableWidget_2->verticalScrollBar()->setValue(iCurValueTmp*100.0/(double)m_iScale * g_dPixelPerCm);
|
||||
}
|
||||
}
|
||||
//通知界面重设范围
|
||||
double iCurValue = (iNumShow-1)*dScrollHeight + upper;
|
||||
double iCurValue = (double)(iNumShow-1)*dScrollHeight + upper;
|
||||
emit CallManage::getInstance()->sig_vertScrollBarChanged(m_strUuid, iCurValue, -m_iY1, -m_iY2);//(iNumShow-1)*dScrollHeight_setGeometry
|
||||
// 修复滚动跳动: 翻页时同步发送 setGeometry 信号
|
||||
double iCurValue_setGeom = dDelta - (iNumShow-1)*dScrollHeight;
|
||||
double iCurValue_setGeom = dDelta - (double)(iNumShow-1)*dScrollHeight;
|
||||
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue_setGeom, dScrollHeight_setGeometry, 0, value);
|
||||
}
|
||||
else if(value==upper)
|
||||
|
|
@ -691,7 +694,7 @@ void MainWindowCurve::vertScrollBarChanged(int iValue)
|
|||
}
|
||||
//通知界面重设范围
|
||||
double iCurValue = upper;
|
||||
emit CallManage::getInstance()->sig_vertScrollBarChanged(m_strUuid, iCurValue, -m_iY1, -m_iY2);//(iNumShow-1)*dScrollHeight_setGeometry
|
||||
emit CallManage::getInstance()->sig_vertScrollBarChanged(m_strUuid, iCurValue, -m_iY1, -m_iY2);//(double)(iNumShow-1)*dScrollHeight_setGeometry
|
||||
// 修复滚动跳动: 顶部复位时同步发送 setGeometry
|
||||
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, 0, dScrollHeight_setGeometry, 0, value);
|
||||
}
|
||||
|
|
@ -3448,7 +3451,7 @@ void MainWindowCurve::ZoomIn(float fNewZoom)
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
}
|
||||
|
|
@ -4410,7 +4413,7 @@ void MainWindowCurve::s_showHeadTable()
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
ui->verticalScrollBar->setValue(-m_iY2*100);
|
||||
|
|
@ -4483,7 +4486,7 @@ void MainWindowCurve::s_showHeadTable()
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
ui->verticalScrollBar->setValue(-m_iY2*100);
|
||||
|
|
@ -5718,7 +5721,7 @@ void MainWindowCurve::Open(QString fileFull)
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
//ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100);
|
||||
|
|
@ -6003,7 +6006,7 @@ void MainWindowCurve::s_changeDepth(QString strUuid, QString strSlfName, QString
|
|||
iScreenHeight = (double)(rect2.height()-10- top -bottom - iTableWellTrack_height)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
else{
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom)/g_dPixelPerCm * m_iScale;
|
||||
iScreenHeight = (double)(rect2.height()-10- top -bottom - 4)/g_dPixelPerCm * m_iScale;
|
||||
}
|
||||
|
||||
ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100 - iScreenHeight);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user