class QMouseEvent#

QMouseEvent 包含描述鼠标事件的参数。 更多

Inheritance diagram of PySide6.QtGui.QMouseEvent

概述#

方法#

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

详细描述#

鼠标事件发生在鼠标按钮在控件内按下或释放,或者鼠标光标移动时。

鼠标移动事件仅在鼠标按钮按下时发生,除非启用了鼠标跟踪,使用 QWidget::setMouseTracking()。

当鼠标按钮在窗口部件内部按下时,Qt 将自动捕捉鼠标;窗口部件将继续接收鼠标事件,直到最后一个鼠标按钮释放。

鼠标事件包含一个特殊的接受标志,表示接收者是否想要该事件。如果您的小部件没有处理鼠标事件,应调用 ignore()。鼠标事件会沿着父窗口部件链传播,直到有窗口部件使用 accept() 接受它,或者事件过滤器消耗它。

如果将鼠标事件传播到 Qt::WA_NoMousePropagation 已设置的窗口部件,该鼠标事件将不会进一步传播到父窗口部件链。

可以通过调用从 QInputEvent 继承的 modifiers() 函数来找到键盘修饰符键的当前状态。

position() 函数提供了相对于接收鼠标事件的窗口或项目的光标位置。如果您将窗口作为鼠标事件的后果移动,请使用 globalPosition() 返回的全局位置来避免抖动运动。

可以使用 QWidget::setEnabled() 函数来启用或禁用窗口部件的鼠标和键盘事件。

重新实现 QWidget 的事件处理器,QWidget::mousePressEvent(),QWidget::mouseReleaseEvent(),QWidget::mouseDoubleClickEvent() 和 QWidget::mouseMoveEvent(),以在您的自定义窗口部件中接收鼠标事件。

另请参阅

pos()

__init__(type, localPos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])#
参数::

构建一个由 device 发起的事件对象。

type 参数必须是 QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick 或 QEvent::MouseMove。

localPos 是鼠标光标相对于接收小部件或项的位置。屏幕坐标下的鼠标位置由 globalPos 指定。窗口位置设置为与 localPos 相同的值。造成事件按钮由 Qt::MouseButton 枚举中的值给出。如果事件的 type 是 MouseMove,则该事件适当的按钮为 Qt::NoButton。buttons 是事件当时所有按钮的状态,modifiers 是所有键盘修饰符的状态。

__init__(type, localPos, scenePos, globalPos, button, buttons, modifiers, source[, device=QPointingDevice.primaryPointingDevice()])
参数::
__init__(type, localPos, scenePos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
参数::

构建一个鼠标事件对象。

type 参数必须是 QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick 或 QEvent::MouseMove。

localPosscenePosglobalPos 分别指定鼠标光标相对于接收小部件或项、窗口和屏幕或桌面的位置。

引发事件的 button 以 Qt::MouseButton 枚举的值给出。如果事件 type 为 MouseMove,则此事件适当的按钮为 Qt::NoButton。 buttons 是事件发生时所有按钮的状态, modifiers 是所有键盘修饰符的状态。

__init__(arg__1)
参数::

arg__1QMouseEvent

__init__(type, localPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
参数::

此函数已弃用。

请使用另一个构造函数代替(需要全局位置)。

构建一个由 device 发起的事件对象。

type 参数必须是 QEvent::MouseButtonPress、QEvent::MouseButtonRelease、QEvent::MouseButtonDblClick 或 QEvent::MouseMove 之一。

localPos 是鼠标光标相对于接收窗口或项的位置。窗口位置设置为与 localPos 相同的值。引发事件的 button 以 Qt::MouseButton 枚举的值给出。如果事件 type 是 MouseMove,则此事件适当的按钮为 Qt::NoButton。事件发生时的鼠标和键盘状态由 buttonsmodifiers 指定。

globalPosition() 被初始化为 pos() ,这可能不适合。请使用其他构造函数显式指定全局位置。

__repr__()#
返回类型::

对象

flags()#
返回类型::

MouseEventFlag 的组合

返回鼠标事件标志。

鼠标事件标志提供了有关鼠标事件的其他信息。

另请参阅

flags()

globalPos()#
返回类型::

QPoint

此函数已弃用。

请使用 globalPosition() .toPoint() 代替。

返回事件发生 时鼠标光标的全局位置。这在异步窗口系统(如X11)中非常重要。每次您根据鼠标事件移动小部件时,globalPos()可能与当前的指针位置差别很大,与pos() 以及 QWidget::mapToGlobal( pos() ) 不同。

另请参阅

globalX() globalY()

globalX()#
返回类型::

int

此函数已弃用。

使用 globalPosition() instead. x() instead.

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

另请参阅

globalY() globalPos()

globalY()#
返回类型::

int

此函数已弃用。

使用 globalPosition() . y() instead.

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

另请参阅

globalX() globalPos()

localPos()#
返回类型::

QPointF

此函数已弃用。

使用 position() instead.

以QPointF的形式返回鼠标光标相对于接收到事件的窗口或元素的位置。

如果您将窗口作为鼠标事件的结果移动,请使用screenPos()返回的屏幕位置,以避免抖动效果。

pos()#
返回类型::

QPoint

此函数已弃用。

使用 position() instead.

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

如果移动窗口是由于鼠标事件导致的,则使用globalPos()返回的全局位置,以避免抖动。

另请参阅

x() y() globalPos()

screenPos()#
返回类型::

QPointF

此函数已弃用。

请使用globalPosition()代替。

以QPointF的形式返回相对于接收到事件屏幕的鼠标光标位置。

source()
返回类型::

MouseEventSource

请使用pointingDevice()代替。

返回关于鼠标事件源的详细信息。

鼠标事件源可用于区分真实和伪造的鼠标事件。后者是由操作系统或Qt自身从触摸事件合成的事件。这个枚举告诉您它从何处合成;但通常更有用的是知道它从哪个设备合成,因此请尝试使用pointingDevice()代替。

许多平台不提供此类信息。在这样的平台上,总是返回Qt::MouseEventNotSynthesized。

在 Qt 5 基础代码中,源代码(source())通常被用于区分来自真鼠标事件和由某些遗留 QQuickItem 或 QWidget 子类无法响应的 QTouchEvent 合成的额外事件。但是,无法确定它是由 QTouchEventQTabletEvent 合成的,并且丢失了其他信息。`pointingDevice()` 能够告诉你它来自的特定设备,因此你可能需要检查 `pointingDevice()->type()` 或 `pointingDevice()->capabilities()` 来确定如何对此事件做出响应。但最好是直接对原始事件做出响应,而不仅仅是处理鼠标事件。

另请参阅

source()

windowPos(#
返回类型::

QPointF

此函数已弃用。

使用 scenePosition() 替代。

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

如果移动窗口是由于鼠标事件导致的,则使用globalPos()返回的全局位置,以避免抖动。

x(#
返回类型::

int

此函数已弃用。

使用 position() .x() 替代。

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

另请参阅

y() pos()

y(#
返回类型::

int

此函数已弃用。

使用 position() .y() 替代。

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

另请参阅

x() pos()