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)
發現比較關鍵的變量有: pixelDelta , angleDelta , qt4Delta , buttons

由於目標是讓表格滾動減速,考慮修改qt4Delta的值,讓軟件識別的滾動減少,從而實現減速。實現代碼:

如此改動能夠在全局修改滾輪的速度。但是如果涉及到非表格控件,可能會因爲重新構造的Event非法報錯。

其實Qt留給了開發者一個使用接口:

使用setWheelScorllLines() 即可設置, 需要給QApplication設置,通常在Main函數裏執行。