PySide6.QtGui.QWheelEvent

class QWheelEvent

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

PySide6.QtGui.QWheelEvent 的继承图

概要

属性

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

滚轮事件会发送到鼠标光标下的小部件,但如果该小部件不处理事件,它们将被发送到焦点小部件。滚轮事件既适用于鼠标滚轮,也适用于触控板滚动手势。有两种方法可以读取滚轮事件的增量:angleDelta() 返回以滚轮度数为单位的增量。这些值始终提供。pixelDelta() 返回以屏幕像素为单位的增量,适用于具有高分辨率触控板的平台,如 macOS。如果是这种情况,device() ->type() 将返回 QInputDevice::DeviceType::Touchpad。

函数 position()globalPosition() 返回事件发生时鼠标光标的位置。

一个滚轮事件包含一个特殊的接受标志,表示接收者是否想要该事件。如果您不处理滚轮事件,您应该调用ignore();这确保它将被发送到父部件。

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

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

另请参阅

QMouseEvent grabMouse()

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property angleDeltaᅟ: QPoint
Access functions:
property deviceᅟ: QPointingDevice

访问函数:

property invertedᅟ: bool
Access functions:
property phaseᅟ: Qt.ScrollPhase
Access functions:
property pixelDeltaᅟ: QPoint
Access functions:
__init__(arg__1)
Parameters:

arg__1QWheelEvent

__init__(pos, globalPos, pixelDelta, angleDelta, buttons, modifiers, phase, inverted[, source=Qt.MouseEventNotSynthesized[, device=QPointingDevice.primaryPointingDevice()]])
Parameters:

构造一个滚轮事件对象。

pos 提供了鼠标光标在窗口中的位置。全局坐标中的位置由 globalPos 指定。

pixelDelta 包含屏幕上滚动的像素距离,而 angleDelta 包含滚轮的旋转角度。pixelDelta 是可选的,可以为空。

事件发生时鼠标和键盘的状态由buttonsmodifiers指定。

事件的滚动阶段由phase指定,而source指示这是真实的还是人工(合成)的事件。

如果系统配置为反转事件传递的增量值(例如macOS上触摸板的自然滚动),inverted应为true。否则,invertedfalse

滚轮事件起源的设备由device指定。

__repr__()
Return type:

字符串

angleDelta()
Return type:

QPoint

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回滚轮旋转的相对量,以八分之一度为单位。正值表示滚轮向前旋转远离用户;负值表示滚轮向后旋转朝向用户。angleDelta().y() 提供了自上次事件以来普通垂直鼠标滚轮旋转的角度。angleDelta().x() 提供了水平鼠标滚轮旋转的角度,如果鼠标有水平滚轮;否则它保持为零。一些鼠标允许用户倾斜滚轮以执行水平滚动,一些触摸板支持水平滚动手势;这也会出现在 angleDelta().x() 中。

大多数鼠标类型以15度的步长工作,在这种情况下,delta值是120的倍数;即,120单位 * 1/8 = 15度。

然而,一些鼠标具有更高分辨率的滚轮,并发送小于120单位(小于15度)的增量值。为了支持这种可能性,您可以累积添加事件中的增量值,直到达到120的值,然后滚动小部件,或者您可以部分滚动小部件以响应每个滚轮事件。但为了提供更原生的感觉,您应该优先在支持的平台上使用pixelDelta()

示例:

def wheelEvent(self, event):

    numPixels = event.pixelDelta()
    numDegrees = event.angleDelta() / 8
    if not numPixels.isNull():
        scrollWithPixels(numPixels)
     elif not numDegrees.isNull():
        numSteps = numDegrees / 15
        scrollWithDegrees(numSteps)

    event.accept()

注意

在支持滚动phases的平台上,当以下情况时,delta可能为空:

  • 滚动即将开始,但距离尚未改变 (Qt::ScrollBegin),

  • 或者滚动已经结束,距离不再改变(Qt::ScrollEnd)。

另请参阅

pixelDelta()

属性 angleDeltaᅟ 的获取器。

hasPixelDelta()
Return type:

布尔

inverted()
Return type:

布尔

返回事件传递的增量值是否被反转。

通常,如果垂直滚轮的顶部旋转远离操作它的手,将会产生一个QWheelEvent,其delta值为正。同样,如果水平滚轮的顶部向左移动,也会产生一个QWheelEvent,其delta值为正。

然而,在某些平台上这是可配置的,因此上述相同的操作将产生负的增量值(但具有相同的幅度)。通过反转属性,滚轮事件消费者可以选择始终遵循滚轮的方向,而不管系统设置如何,但仅适用于特定的小部件。(一个这样的用例可能是用户以与视觉Tumbler旋转相同的方向旋转滚轮。另一个用例是使滑块手柄跟随手指在触摸板上的移动方向,而不管系统配置如何。)

注意

许多平台不提供此类信息。在此类平台上,inverted 始终返回 false。

属性 invertedᅟ 的获取器。

isInverted()
Return type:

布尔

phase()
Return type:

ScrollPhase

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

注意

Qt::ScrollBegin 和 Qt::ScrollEnd 阶段目前仅在 macOS 上受支持。

属性 phaseᅟ 的获取器。

pixelDelta()
Return type:

QPoint

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

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

示例:

def wheelEvent(self, event):

    numPixels = event.pixelDelta()
    numDegrees = event.angleDelta() / 8
    if not numPixels.isNull():
        scrollWithPixels(numPixels)
     elif not numDegrees.isNull():
        numSteps = numDegrees / 15
        scrollWithDegrees(numSteps)

    event.accept()

注意

在支持滚动phases的平台上,当以下情况时,delta可能为空:

  • 滚动即将开始,但距离尚未改变 (Qt::ScrollBegin),

  • 或者滚动已经结束,距离不再改变(Qt::ScrollEnd)。

注意

在X11上,此值是驱动程序特定的且不可靠,请改用angleDelta()

属性 pixelDeltaᅟ 的获取器。

source()
Return type:

MouseEventSource

请使用 pointingDevice() 代替。

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

源可以用来区分来自具有物理滚轮的鼠标的事件和由其他方式生成的事件,例如触摸板上的轻扫手势。此枚举告诉您它是从哪里合成的;但通常更有用的是知道它是从哪个设备合成的,因此请尝试使用pointingDevice()代替。

注意

许多平台不提供此类信息。在此类平台上,始终返回Qt::MouseEventNotSynthesized。

另请参阅

MouseEventSource