Qt中修改滚轮事件:表格显示内容滚动
鼠标滚轮触发后执行的事件为:QEvent::QWheel, 这个类为QWheelEvent
对于应用调用来说,关注的点为:是否和其他按钮一起触发、滚动的距离等。观察其构造函数:
QWheelEvent(const QPointF & pos, const QPointF & globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) | |
QWheelEvent(const QPointF & pos, const QPointF & globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase) | |
QWheelEvent(const QPointF & pos, const QPointF & globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source) |
由于目标是让表格滚动减速,考虑修改qt4Delta的值,让软件识别的滚动减少,从而实现减速。实现代码:
如此改动能够在全局修改滚轮的速度。但是如果涉及到非表格控件,可能会因为重新构造的Event非法报错。
其实Qt留给了开发者一个使用接口:
使用setWheelScorllLines() 即可设置, 需要给QApplication设置,通常在Main函数里执行。