QWheelEvent 类

The QWheelEvent 类包含滚轮事件的描述参数。 更多...

头: #include <QWheelEvent>
qmake: QT += gui
继承: QInputEvent

公共函数

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 )
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 , bool inverted )
QWheelEvent (QPointF pos , QPointF globalPos , QPoint pixelDelta , QPoint angleDelta , Qt::MouseButtons buttons , Qt::KeyboardModifiers modifiers , Qt::ScrollPhase phase , bool inverted , Qt::MouseEventSource source = Qt::MouseEventNotSynthesized)
QPoint angleDelta () const
Qt::MouseButtons buttons () const
QPoint globalPos () const
const QPointF & globalPosF () const
int globalX () const
int globalY () const
bool inverted () const
Qt::ScrollPhase phase () const
QPoint pixelDelta () const
QPoint pos () const
const QPointF & posF () const
Qt::MouseEventSource source () const
int x () const
int y () const

保护变量

uint _unused_
QPoint angleD
QPointF g
bool invertedScrolling
Qt::MouseButtons mouseState
QPointF p
uint ph
QPoint pixelD
int qt4D
Qt::Orientation qt4O
int reserved
uint src

额外继承成员

详细描述

The QWheelEvent 类包含滚轮事件的描述参数。

滚轮事件会被发送给鼠标光标下 Widget,但若该小部件不处理事件,它们会被发送给聚焦小部件。鼠标滚轮和触摸板卷动手势都会生成滚轮事件。有 2 种方式能读取滚轮事件增量: angleDelta () 返回滚轮增量以度为单位。始终提供此值。 pixelDelta () returns the delta in screen pixels and is available on platforms that have high-resolution trackpads, such as macOS . If that is the case, source () 会返回 Qt::MouseEventSynthesizedBySystem .

函数 pos () 和 globalPos () 返回事件出现时鼠标光标位置。

滚轮事件包含指示接收者是否想要事件的,特殊接受标志。应该调用 ignore () 若不处理滚轮事件;这确保它会被发送给父级 Widget。

The QWidget::setEnabled () 函数可用于启用 (或禁用) 小部件的鼠标事件和键盘事件。

事件处理程序 QWidget::wheelEvent () 接收滚轮事件。

另请参阅 QMouseEvent and QWidget::grabMouse ().

成员函数文档编制

QWheelEvent:: QWheelEvent (const QPointF & pos , const QPointF & globalPos , QPoint pixelDelta , QPoint angleDelta , int qt4Delta , Qt::Orientation qt4Orientation , Qt::MouseButtons buttons , Qt::KeyboardModifiers modifiers )

构造滚轮事件对象。

The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .

pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta 包含滚轮旋转距离。 pixelDelta 可选且可以是 null。

事件发生时的鼠标和键盘状态的指定是通过 buttons and modifiers .

为向后兼容,事件还可以保持单向滚轮事件数据: qt4Delta 指定旋转,和 qt4Orientation 方向。

The phase () 被初始化为 Qt::ScrollUpdate 。使用其它构造函数明确指定阶段。

另请参阅 posF (), globalPosF (), angleDelta (),和 pixelDelta ().

QWheelEvent:: 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 )

构造滚轮事件对象。

The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .

pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta 包含滚轮旋转距离。 pixelDelta 可选且可以是 null。

事件发生时的鼠标和键盘状态的指定是通过 buttons and modifiers .

为向后兼容,事件还可以保持单向滚轮事件数据: qt4Delta 指定旋转,和 qt4Orientation 方向。

事件卷动阶段的指定是通过 phase .

另请参阅 posF (), globalPosF (), angleDelta (), pixelDelta (),和 phase ().

QWheelEvent:: 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 )

构造滚轮事件对象。

The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .

pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta 包含滚轮旋转距离。 pixelDelta 可选且可以是 null。

事件发生时的鼠标和键盘状态的指定是通过 buttons and modifiers .

为向后兼容,事件还可以保持单向滚轮事件数据: qt4Delta 指定旋转,和 qt4Orientation 方向。

事件卷动阶段的指定是通过 phase .

若滚轮事件来自物理鼠标滚轮, source 被设为 Qt::MouseEventNotSynthesized 。若它来自由操作系统检测到的手势,或来自非鼠标硬件设备,譬如 pixelDelta 与手指运动直接相关, source 被设为 Qt::MouseEventSynthesizedBySystem 。若它来自 Qt,source 被设为 Qt::MouseEventSynthesizedByQt .

另请参阅 posF (), globalPosF (), angleDelta (), pixelDelta (),和 phase ().

QWheelEvent:: 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 , bool inverted )

构造滚轮事件对象。

The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .

pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta 包含滚轮旋转距离。 pixelDelta 可选且可以是 null。

事件发生时的鼠标和键盘状态的指定是通过 buttons and modifiers .

为向后兼容,事件还可以保持单向滚轮事件数据: qt4Delta 指定旋转,和 qt4Orientation 方向。

事件卷动阶段的指定是通过 phase .

若滚轮事件来自物理鼠标滚轮, source 被设为 Qt::MouseEventNotSynthesized 。若它来自由操作系统检测到的手势,或来自非鼠标硬件设备,譬如 pixelDelta 与手指运动直接相关, source 被设为 Qt::MouseEventSynthesizedBySystem 。若它来自 Qt,source 被设为 Qt::MouseEventSynthesizedByQt .

若系统被配置为反转随事件交付的增量值 (譬如 OS X 触摸板的自然卷动), inverted 应该为 true 。否则, inverted is false

另请参阅 posF (), globalPosF (), angleDelta (), pixelDelta (),和 phase ().

QWheelEvent:: QWheelEvent ( QPointF pos , QPointF globalPos , QPoint pixelDelta , QPoint angleDelta , Qt::MouseButtons buttons , Qt::KeyboardModifiers modifiers , Qt::ScrollPhase phase , bool inverted , Qt::MouseEventSource source = Qt::MouseEventNotSynthesized)

构造滚轮事件对象。

The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .

pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta 包含滚轮旋转距离。 pixelDelta 可选且可以是 null。

事件发生时的鼠标和键盘状态的指定是通过 buttons and modifiers .

事件卷动阶段的指定是通过 phase .

若滚轮事件来自物理鼠标滚轮, source 被设为 Qt::MouseEventNotSynthesized 。若它来自由操作系统检测到的手势,或来自非鼠标硬件设备,譬如 pixelDelta 与手指运动直接相关, source 被设为 Qt::MouseEventSynthesizedBySystem 。若它来自 Qt,source 被设为 Qt::MouseEventSynthesizedByQt .

If the system is configured to invert the delta values delivered with the event (such as natural scrolling of the touchpad on macOS ), inverted 应该为 true 。否则, inverted is false

另请参阅 posF (), globalPosF (), angleDelta (), pixelDelta (),和 phase ().

QPoint QWheelEvent:: angleDelta () const

返回旋转滚轮的距离,以八分之一度为单位。正值指示滚轮向前旋转远离用户;负值指示滚轮向后旋转朝着用户。

大多数鼠标类型以 15 度步幅为单位工作,在这种情况下,增量值是 120 的倍增 (即:120 单位 *1/8 = 15 度)。

不管怎样,一些鼠标拥有更精细分辨率的滚轮,并发送小于 120 单位 (小于 15 度) 的增量值。要支持这种可能性,可以累加来自事件的增量值,直到达到 120,然后卷动 Widget,或者,可以部分卷动小部件以响应各滚轮事件。

范例:

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;
    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }
    event->accept();
}
					

注意: 当平台支持卷动 phases ,增量可能为 null 当:

Qt::MouseButtons QWheelEvent:: buttons () const

返回事件出现时的鼠标状态。

QPoint QWheelEvent:: globalPos () const

返回鼠标指针的全局位置 当事件发生时 。这对异步窗口系统 (譬如 X11) 很重要。每当围绕响应鼠标事件移动 Widget 时,globalPos() 会非常不同于当前光标位置返回通过 QCursor::pos ().

另请参阅 globalX () 和 globalY ().

const QPointF &QWheelEvent:: globalPosF () const

返回鼠标指针的全局位置 当事件发生时 。这对异步窗口系统 (譬如 X11) 很重要。每当围绕响应鼠标事件移动 Widget 时,globalPosF() 会非常不同于当前光标位置返回通过 QCursor::pos ().

另请参阅 posF ().

int QWheelEvent:: globalX () const

返回事件发生时的鼠标光标全局 X 位置。

另请参阅 globalY () 和 globalPos ().

int QWheelEvent:: globalY () const

返回事件发生时的鼠标光标全局 Y 位置。

另请参阅 globalX () 和 globalPos ().

bool QWheelEvent:: inverted () const

返回随事件交付的增量值是否反转。

通常,垂直滚轮会产生 QWheelEvent 具有正增量值若滚轮顶部旋转离开操作它的手。同样,水平滚轮运动会产生 QWheelEvent 具有正增量值若滚轮顶部向左移动。

不管怎样,在某些平台这是可配置的,因此如上述的相同操作会产生负增量值 (但幅度一样)。利用反转特性,滚轮事件消费者可以选择始终跟随滚轮方向,不管系统设置,但仅适用于特定 Widget (一种这样的用例可能是用户按如视觉 "Tumbler 转盘" 旋转的相同方向旋转滚轮。另一用例是使滑动手柄跟随触摸板上手指的移动方向,不管系统配置)。

注意: 很多平台不提供这样的信息。在这种平台,inverted 始终返回 false。

该函数在 Qt 5.7 引入。

Qt::ScrollPhase QWheelEvent:: phase () const

返回此滚轮事件的卷动阶段。

注意: The Qt::ScrollBegin and Qt::ScrollEnd phases are currently supported only on macOS .

该函数在 Qt 5.2 引入。

QPoint QWheelEvent:: pixelDelta () const

Returns the scrolling distance in pixels on screen. This value is provided on platforms that support high-resolution pixel-based delta values, such as macOS . The value should be used directly to scroll content on screen.

范例:

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;
    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }
    event->accept();
}
					

注意: 当平台支持卷动 phases ,增量可能为 null 当:

注意: 在 X11,此值是驱动程序特定的且不可靠,使用 angleDelta () 代替

QPoint QWheelEvent:: pos () const

返回相对于接收事件 Widget 的鼠标光标位置。

若围绕响应鼠标事件移动 Widget,使用 globalPos () 而不是此函数。

另请参阅 x (), y (),和 globalPos ().

const QPointF &QWheelEvent:: posF () const

返回相对于接收事件 Widget 的鼠标光标位置。

若围绕响应鼠标事件移动 Widget,使用 globalPosF () 而不是此函数。

另请参阅 globalPosF ().

Qt::MouseEventSource QWheelEvent:: source () const

返回滚轮事件源的有关信息。

源可以用于区分来自具有物理滚轮的鼠标事件,和由某些其它手段 (例如在触摸板上轻弹手势) 生成的事件。

注意: 很多平台不提供这种信息。在这种平台 Qt::MouseEventNotSynthesized 始终被返回。

该函数在 Qt 5.5 引入。

另请参阅 Qt::MouseEventSource .

int QWheelEvent:: x () const

返回相对于接收事件 Widget 的鼠标光标 X 位置。

另请参阅 y () 和 pos ().

int QWheelEvent:: y () const

返回相对于接收事件 Widget 的鼠标光标 Y 位置。

另请参阅 x () 和 pos ().