QWheelEvent 类包含滚轮事件的描述参数。 更多...
头: | #include <QWheelEvent> |
qmake: | QT += gui |
继承: | QInputEvent |
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 |
QPointF | globalPosition () const |
bool | inverted () const |
Qt::ScrollPhase | phase () const |
QPoint | pixelDelta () const |
QPointF | position () const |
Qt::MouseEventSource | source () const |
滚轮事件会被发送给鼠标光标下 Widget,但若该小部件不处理事件,它们会被发送给聚焦小部件。鼠标滚轮和触摸板卷动手势都会生成滚轮事件。有 2 种方式能读取滚轮事件增量: angleDelta () returns the deltas in wheel degrees. These values are always provided. pixelDelta () returns the deltas in screen pixels, and is available on platforms that have high-resolution trackpads, such as macOS. If that is the case, source () 会返回 Qt::MouseEventSynthesizedBySystem .
The functions pos() and globalPos() return the mouse cursor's location at the time of the event.
滚轮事件包含指示接收者是否想要事件的,特殊接受标志。应该调用 ignore () 若不处理滚轮事件;这确保它会被发送给父级 Widget。
The QWidget::setEnabled () 函数可用于启用 (或禁用) 小部件的鼠标事件和键盘事件。
事件处理程序 QWidget::wheelEvent () 接收滚轮事件。
另请参阅 QMouseEvent and QWidget::grabMouse ().
构造滚轮事件对象。
The pos 提供窗口中鼠标光标的位置。在全局坐标中位置的指定是通过 globalPos .
pixelDelta 包含以像素为单位的屏幕卷动距离,而 angleDelta contains the wheel rotation angle. 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
该函数在 Qt 5.12 引入。
另请参阅 position (), globalPosition (), angleDelta (), pixelDelta (), phase (), inverted (),和 source ().
Returns the relative amount that the wheel was rotated, in eighths of a degree. A positive value indicates that the wheel was rotated forwards away from the user; a negative value indicates that the wheel was rotated backwards toward the user.
angleDelta().y()
provides the angle through which the common vertical mouse wheel was rotated since the previous event.
angleDelta().x()
provides the angle through which the horizontal mouse wheel was rotated, if the mouse has a horizontal wheel; otherwise it stays at zero. Some mice allow the user to tilt the wheel to perform horizontal scrolling, and some touchpads support a horizontal scrolling gesture; that will also appear in
angleDelta().x()
.
大多数鼠标类型以 15 度步幅为单位工作,在这种情况下,增量值是 120 的倍增 (即:120 单位 *1/8 = 15 度)。
However, some mice have finer-resolution wheels and send delta values that are less than 120 units (less than 15 degrees). To support this possibility, you can either cumulatively add the delta values from events until the value of 120 is reached, then scroll the widget, or you can partially scroll the widget in response to each wheel event. But to provide a more native feel, you should prefer pixelDelta () on platforms where it's available.
范例:
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 当:
另请参阅 pixelDelta ().
返回事件出现时的鼠标状态。
返回鼠标指针的全局位置 当事件发生时 。这对异步窗口系统 (譬如 X11) 很重要;每当围绕响应鼠标事件移动 Widget 时,globalposition() 会非常不同于当前光标位置返回通过 QCursor::pos ().
另请参阅 position ().
返回随事件交付的增量值是否反转。
通常,垂直滚轮会产生 QWheelEvent 具有正增量值若滚轮顶部旋转离开操作它的手。同样,水平滚轮运动会产生 QWheelEvent 具有正增量值若滚轮顶部向左移动。
不管怎样,在某些平台这是可配置的,因此如上述的相同操作会产生负增量值 (但幅度一样)。利用反转特性,滚轮事件消费者可以选择始终跟随滚轮方向,不管系统设置,但仅适用于特定 Widget (一种这样的用例可能是用户按如视觉 "Tumbler 转盘" 旋转的相同方向旋转滚轮。另一用例是使滑动手柄跟随触摸板上手指的移动方向,不管系统配置)。
注意: 很多平台不提供这样的信息。在这种平台,inverted 始终返回 false。
该函数在 Qt 5.7 引入。
返回此滚轮事件的卷动阶段。
注意: The Qt::ScrollBegin and Qt::ScrollEnd 阶段目前仅 macOS 支持。
该函数在 Qt 5.2 引入。
返回以屏幕像素为单位的卷动距离。此值由支持基于高分辨率像素的增量值的平台 (譬如 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 () 代替
返回相对于接收事件 Widget 的鼠标光标位置。
若围绕响应鼠标事件移动 Widget,使用 globalPosition () 而不是此函数。
该函数在 Qt 5.14 引入。
另请参阅 globalPosition ().
返回滚轮事件源的有关信息。
源可以用于区分来自具有物理滚轮的鼠标事件,和由某些其它手段 (例如在触摸板上轻弹手势) 生成的事件。
注意: 很多平台不提供这种信息。在这种平台 Qt::MouseEventNotSynthesized 始终被返回。
该函数在 Qt 5.5 引入。
另请参阅 Qt::MouseEventSource .