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

额外继承成员

详细描述

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

滚轮事件会被发送给鼠标光标下 Widget,但若该小部件不处理事件,它们会被发送给聚焦小部件。鼠标滚轮和触摸板卷动手势都会生成滚轮事件。有 2 种方式能读取滚轮事件增量: angleDelta () 返回滚轮增量以度为单位。始终提供此值。 pixelDelta () 返回屏幕增量以像素为单位,且可用于拥有高分辨率触摸板的平台 (譬如 macOS)。若是这种情况, 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 ().

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 阶段目前仅 macOS 支持。

该函数在 Qt 5.2 引入。

QPoint QWheelEvent:: pixelDelta () const

返回以屏幕像素为单位的卷动距离。此值由支持基于高分辨率像素的增量值的平台 (譬如 macOS) 提供。应该将值直接用于卷动屏幕内容。

范例:

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 ().