Q滚动条滚动到中心

QScrollbar scroll to center

本文关键字:滚动 滚动条      更新时间:2023-10-16

我想将我的QScrollbar滚动到中心;我以为这很容易,但

QScrollBar *bar = ui->scrollArea->horizontalScrollBar();
bar->setValue(bar->maximum()/2);
bar->update();
ui->scrollArea->update();

不能胜任这项工作。出了什么问题?

在Qt的文档中,实际文档长度由定义

document length=maximum()-minimum()+pageStep()(请参见QScrollBar类参考)

所以试着更换

int center = (min+max)/2;

带有

int center = (max+min+bar->pagestep())/2;

QScrollBar也有一个最小值。因此,将滚动条居中:

int max = bar->maximum();
int min = bar->minimum();
int center = (  min + max ) / 2;
bar->setValue( center );