class QWheelEvent#

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

Inheritance diagram of 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#
访问函数
property deviceᅟ: QPointingDevice#

访问函数

property invertedᅟ: bool#
访问函数
property phaseᅟ: Qt.ScrollPhase#
访问函数
属性 pixelDeltaᅟ: QPoint#
访问函数
__init__(pos, globalPos, pixelDelta, angleDelta, buttons, modifiers, phase, inverted[, source=Qt.MouseEventNotSynthesized[, device=QPointingDevice.primaryPointingDevice()]])#
参数:

构造一个滚轮事件对象。

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

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

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

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

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

由轮事件产生的设备由device指定。

__init__(arg__1)
参数:

arg__1QWheelEvent

__repr__()#
返回类型:

对象

angleDelta()#
返回类型:

QPoint

警告

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

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

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

但是,一些鼠标有更高分辨率的滚轮,发送小于120单位的delta值(小于15度)。为了支持这种可能性,您可以选择在事件中累积添加delta值,直到达到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的平台上,如果

  • 滚动即将开始,但距离尚未改变(Qt::ScrollBegin),则delta可能为空。

  • 或滚动结束且距离不再改变(Qt::ScrollEnd)。

另请参阅

pixelDelta()

属性 angleDeltaᅟ 的 getter。

hasPixelDelta()#
返回类型:

bool

inverted()#
返回类型:

bool

返回事件提供的delta值是否被反转。

通常,当滚轮顶部远离操作者旋转时,垂直滚轮会产生具有正delta值的 QWheelEvent。类似地,当滚轮顶部向左移动时,水平滚轮运动将产生具有正delta值的 QWheelEvent

然而,在某些平台上,这是一个可配置的设置,因此上述相同操作将产生具有相同幅度的负delta值。使用反转属性,轮事件消费者可以选择始终跟随轮的移动方向,无论系统设置如何,但仅限于特定控件。(一种可能的使用情况是,用户旋转轮的方式与视觉旋钮旋转的方向相同。另一个用例是,使滑动块的拨动向跟随触摸板的指尖移动方向,而不管系统配置如何。)

说明

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

属性 invertedᅟ 的 getter。

isInverted()#
返回类型:

bool

phase()#
返回类型:

ScrollPhase

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

说明

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

属性 phaseᅟ 的 getter。

pixelDelta()#
返回类型:

QPoint

警告

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

返回屏幕上的滚动距离(像素)。这个值是在支持高分辨率像素delta值的平台上提供的,例如 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的平台上,如果

  • 滚动即将开始,但距离尚未改变(Qt::ScrollBegin),则delta可能为空。

  • 或滚动结束且距离不再改变(Qt::ScrollEnd)。

说明

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

属性 pixelDeltaᅟ 的 getter。

source()#
返回类型:

MouseEventSource

请使用 pointingDevice() 代替。

返回关于轮事件来源的信息。

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

说明

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

另请参阅

MouseEventSource