QWheelEvent 类参考
QWheelEvent类包含用于描述鼠标滑轮事件的相关参数。
#include<QWheelEvent>
继承至:QInputEvent
滑动鼠标转轮会产生一系列事件(QWheelEvent),这些事件会被传送给鼠标指针所在的父窗口,如果此窗口不处理此事件(Event)
该鼠标事件默认情况下会传送给具有输入焦点的窗口。 计算滑轮滚动轴滑动的距离可以用函数delta()计算,函数pos()和globalpos()
可以返回再一次鼠标事件中鼠标指针的当前位置。
一个鼠标滑轮事件包含一些指定的接受标志用于指出该事件是否会被接收和处理,如果不处理该事件可以调用ignore(),
这样可以保证该事件会被传送给鼠标指针所在的父窗口。
函数QWidget::setEnabled()可以用于禁止/允许一个窗口接收鼠标和键盘事件。
事件处理函数QWidget::wheelEvent()被用于接收鼠标滑轮事件。
QWheelEvent类包含用于描述鼠标滑轮事件的相关参数。
#include<QWheelEvent>
继承至:QInputEvent
公有函数:
QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
Qt::Orientation orient = Qt::Vertical )
QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons,
Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
Qt::MouseButtons buttons () const
int delta () const
const QPoint & globalPos () const
int globalX () const
int globalY () const
Qt::Orientation orientation () const
const QPoint & pos () const
int x () const
int y () const
1个从父类QInputEvent继承过来的公有函数:Qt::KeyboardModifiers
modifiers () const
6个从QEvent继承过来的公有函数:
QEvent ( Type type )
virtual ~QEvent ()
void accept ()
void ignore ()
bool isAccepted () const
void setAccepted ( bool accepted )
bool spontaneous () const
Type type () const
详细描述:
QWheelEvent类用于描述鼠标转轮(middle_mouse_button)事件.当鼠标指针定位于一个窗口界面之上时,滑动鼠标转轮会产生一系列事件(QWheelEvent),这些事件会被传送给鼠标指针所在的父窗口,如果此窗口不处理此事件(Event)
该鼠标事件默认情况下会传送给具有输入焦点的窗口。 计算滑轮滚动轴滑动的距离可以用函数delta()计算,函数pos()和globalpos()
可以返回再一次鼠标事件中鼠标指针的当前位置。
一个鼠标滑轮事件包含一些指定的接受标志用于指出该事件是否会被接收和处理,如果不处理该事件可以调用ignore(),
这样可以保证该事件会被传送给鼠标指针所在的父窗口。
函数QWidget::setEnabled()可以用于禁止/允许一个窗口接收鼠标和键盘事件。
事件处理函数QWidget::wheelEvent()被用于接收鼠标滑轮事件。
成员函数描述:
QWheelEvent::QWheelEvent ( const QPoint & pos, int delta, Qt::MouseButtons buttons,
Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
创建一个wheelEvent对象,参数pos代表鼠标指针在窗口中的当前位置,通常用globalPos()初始化QCursor::pos(),但并不总是正确的。
如果需要显示指定一个全局位置,可以用其他的构造函数。
参数button用于描述在鼠标事件过程中鼠标按键的状态(state),delta()可以返回滑动的距离,参数modifiers用于描述在鼠标事件中
鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),参数orient用于指示鼠标滑轮滚动的方向(比如向上或者向下)。
QWheelEvent::QWheelEvent ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons,
Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical )
创建一个wheelEvent对象,参数pos用于指出鼠标指针在当前窗口中的当前位置,要返回鼠标指针在全局坐标系统中的位置可以调用globalPos(),
函数delta()用于返回鼠标滑轮滑动的距离,参数modifiers用于描述在鼠标事件中鼠标状态位改变时的参数值 (比如鼠标的左中右按键的切换),
参数orient用于指示鼠标滑轮滚动的方向(比如向上或者向下)。
Qt::MouseButtons QWheelEvent::buttons () const
当事件发生时,返回鼠标状态。
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(); //接收该事件
}
const QPoint & QWheelEvent::globalPos () const
返回鼠标指针的全局位置,这个特性对于异步窗口系统很重要譬如X11,然后当你滑动窗口作为鼠标响应事件时,
可以用globalPos()函数与QCursor::pos()函数进行区分当前鼠标指针所在的位置。
int QWheelEvent::globalX () const
返回鼠标指针全局坐标中X轴所对应的坐标值。
int QWheelEvent::globalY () const
返回鼠标指针全局坐标中Y轴所对应的坐标值。
Qt::Orientation QWheelEvent::orientation () const
返回鼠标转轮滚动的方向,当为整数值时表示向前,负数值时表示向后。方向参考系可选用户本身。
const QPoint & QWheelEvent::pos () const
返回鼠标指针相对于窗口的坐标值QPoint(x,y),如果滚动窗口可以用globalPos()替换本函数从而返回全局坐标值。
int QWheelEvent::x () const
返回鼠标指针相对于窗口的相对位置值的X坐标值。
int QWheelEvent::y () const
返回鼠标指针相对于窗口的相对位置值的Y坐标值。