QT中滚轮事件QWheelEvent实例
2014-03-03 13:39
218 查看
QWheelEvent类包含用于描述鼠标滑轮事件的相关参数。
头函数:#include<QWheelEvent>,继承至:QInputEvent公有函数:1)QWheelEvent::QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons,Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
功能与参数:
创建一个wheelEvent对象,(1)参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。如果需要显示指定一个全局位置,可以用其他的构造函数。
(2)参数button用于描述在鼠标事件过程中鼠标按键的状态(state),(3)delta()可以返回滑动的距离,(4)参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),(5)参数orient用于指示鼠标滑轮滚动的方向(水平或者垂直)。
2)QWheelEvent::QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,Qt::Orientation orient= Qt::Vertical )
功能与参数:创建一个wheelEvent对象,(1)参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。如果需要显示指定一个全局位置,可以用其他的构造函数。
(2)参数button用于描述在鼠标事件过程中鼠标按键的状态(state),(3)delta()可以返回滑动的距离,(4)参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换)(5)参数orient用于指示鼠标滑轮滚动的方向(水平或者垂直)。
3)Qt::MouseButtons QWheelEvent::buttons () const
当事件发生时,返回鼠标状态。
4)int QWheelEvent::delta () const
当鼠标滑轮在滚动时用于返回滑动的距离,该值等于鼠标旋转角度的8倍。正数值表示滑轮相对于用户在向前滑动,相反,负数值表示滑轮相对于用户是向后滑动的。
头函数:#include<QWheelEvent>,继承至:QInputEvent公有函数:1)QWheelEvent::QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons,Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
功能与参数:
创建一个wheelEvent对象,(1)参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。如果需要显示指定一个全局位置,可以用其他的构造函数。
(2)参数button用于描述在鼠标事件过程中鼠标按键的状态(state),(3)delta()可以返回滑动的距离,(4)参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),(5)参数orient用于指示鼠标滑轮滚动的方向(水平或者垂直)。
2)QWheelEvent::QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,Qt::Orientation orient= Qt::Vertical )
功能与参数:创建一个wheelEvent对象,(1)参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。如果需要显示指定一个全局位置,可以用其他的构造函数。
(2)参数button用于描述在鼠标事件过程中鼠标按键的状态(state),(3)delta()可以返回滑动的距离,(4)参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换)(5)参数orient用于指示鼠标滑轮滚动的方向(水平或者垂直)。
3)Qt::MouseButtons QWheelEvent::buttons () const
当事件发生时,返回鼠标状态。
4)int QWheelEvent::delta () const
当鼠标滑轮在滚动时用于返回滑动的距离,该值等于鼠标旋转角度的8倍。正数值表示滑轮相对于用户在向前滑动,相反,负数值表示滑轮相对于用户是向后滑动的。
5)const QPoint & QWheelEvent::globalPos () const 返回鼠标指针的全局位置,这个特性对于异步窗口系统很重要譬如X11,然后当你滑动窗口作为鼠标响应事件时,可以用globalPos()函数与QCursor::pos()函数进行区分当前鼠标指针所在的位置。 6)int QWheelEvent::globalX () const 返回鼠标指针全局坐标中X轴所对应的坐标值。 7)int QWheelEvent::globalY () const 返回鼠标指针全局坐标中Y轴所对应的坐标值。 8)Qt::Orientation QWheelEvent::orientation () const 返回鼠标转轮滚动的方向,水平 Horizontal = 0x1或者垂直Vertical = 0x2。
9)const QPoint & QWheelEvent::pos () const 返回鼠标指针相对于窗口的坐标值QPoint(x,y),如果滚动窗口可以用globalPos()替换本函数从而返回全局坐标值。 10)int QWheelEvent::x () const 返回鼠标指针相对于窗口的相对位置值的X坐标值。 11)int QWheelEvent::y () const
返回鼠标指针相对于窗口的相对位置值的Y坐标值。
*******************************************************************************
注意: 大多数鼠标工作在单步15度的情况下。此时鼠标转轮滑动一圈是360度,鼠标滚轮转动一圈是24步,计算后就是15度一步。你可以滚动一下自己的鼠标滚轮,感受一下滚动过程中的停顿,24个停顿就是24步,一般的鼠标都是24步的。
而鼠标转轮滑动的角度对应于窗口界面单位尺度的8倍,也就是滚动一度,鼠标滚轮在界面上滑动的距离(比如滚动条等)是8个unit单位,在这种情况下,delta的返回值是120(8*15)的倍数。 但是,有些鼠标有更好的解决方案,而且对顶单步值小于15度即delta()的返回值比120要小,为了支持这种可能性,在鼠标事件中既可以累积该返回值,直到该返回值累加到120为止,然后滚动窗口到下一个屏幕(实现换页功能);或者可以小幅度的滚动窗口(实现换行功能)作为对每一次鼠标滚动事件的响应,从而计算该返回值。
**********************************************************************************
例如:
void MyWidget::wheelEvent(QWheelEvent *event) { int numDegrees = event->delta() / 8;//滚动的角度,*8就是鼠标滚动的距离 int numSteps = numDegrees / 15;//滚动的步数,*15就是鼠标滚动的角度 if (event->orientation() == Qt::Horizontal) { scrollHorizontally(numSteps); //水平滚动 } else { scrollVertically(numSteps); //垂直滚动 } event->accept(); //接收该事件 }
相关文章推荐
- QT滚轮事件QWheelEvent简单介绍与实例
- Qt中隐藏滚动条重新实现鼠标滚轮事件wheelEvent
- QT关于鼠标滚轮事件
- js鼠标滚轮上下滚动监听事件应用实例(跨浏览器,亲测)
- Qt中多事件使用实例
- Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item
- Qt 自定义事件详细实例
- Qt5事件处理及实例
- Qt使用Windows Api模拟鼠标单击双击滚轮事件
- QT 鼠标和滚轮事件学习
- qt练习11 鼠标,按键,滚轮事件学习
- js鼠标滚轮上下滚动监听事件应用实例(跨浏览器,亲测)
- 鼠标事件和滚轮事件实例
- Qt 滚轮事件学习
- Qt 自定义事件详细实例(继承QEvent,然后QCoreApplication::postEvent()、sendEvent())
- javascript滚轮事件基础实例讲解(37)
- Qt的事件处理和定时器解析(实例解析)
- Qt 自定义事件详细实例
- Qt中修改滚轮事件:表格显示内容滚动
- Qt中事件处理的方法和实例