QScrollBar singleStep 与其实际步骤不同

问题描述

当我在 QScrollArea 中滚动一个小部件时,它的滚动条的步长不是 singleStep() 而是 singleStep() * 3。

我将 QScrollArea 的 verticalScrollBar() 的 singleStep 设置为 30,以便每次滚动滚动 30,但每次滚动滚动 90。

b

还是这只是我鼠标的问题?

解决方法

正如评论中提到的,您的单步是乘以系统的行数。

如果您想对较少的系统设置使用相同的滚动步骤,请始终相应地调整该步骤。例如,对于 Windows:

#include <winuser.h>
#include <QScrollBar>

void setSingleStep(QScrollBar* bar,int step) {
  UINT sys_steps;
  SystemParametersInfoA(SPI_GETWHEELSCROLLLINES,&sys_steps,0);

  bar->setSingleStep(step / sys_steps);
}