int QWheelEvent::delta () const
当鼠标滑轮在滚动时用于返回滑动的距离,该值等于鼠标旋转角度的8倍。正数值表示滑轮相对于用户在向前滑动,
相反,负数值表示滑轮相对于用户是向后滑动的。
大多数鼠标工作在单步15度的情况下(意思是鼠标转轮滑动一圈是360度,细化成单步就是1度,那么鼠标转轮滑动一度对应于窗口界面单位尺度的8倍),在这种情况下,delta的返回值是120的倍数。计算公式:120 units/8=15度。
但是,有些鼠标有更好的解决方案,而且对顶单步值小于15度即delta()的返回值比120要小,为了支持这种可能性,在鼠标事件中既可以累积该返回值,
直到该返回值累加到120为止,然后滚动窗口;或者可以小幅度的滚动窗口作为对每一次鼠标滚动事件的响应,从而计算该返回值。例如:
void MyWidget::wheelEvent(QWheelEvent *event) { int numDegrees = event->delta() / 8; int numSteps = numDegrees / 15; if (event->orientation() == Qt::Horizontal) { scrollHorizontally(numSteps); //水平滚动 } else { scrollVertically(numSteps); //垂直滚动 } event->accept(); //接收该事件 }