- class QMouseEvent#
类
QMouseEvent
包含描述鼠标事件的参数。 更多…概述#
方法#
def
__init__()
def
__repr__()
def
flags()
def
globalPos()
def
globalX()
def
globalY()
def
localPos()
def
pos()
def
screenPos()
def
source()
def
windowPos()
def
x()
def
y()
注
此文档可能包含自动从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(),以在您的自定义窗口部件中接收鼠标事件。
另请参阅
- __init__(type, localPos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])#
- 参数::
type –
Type
localPos –
QPointF
globalPos –
QPointF
button –
MouseButton
buttons –
MouseButton
的组合修饰符 -
KeyboardModifier
的组合设备 –
QPointingDevice
构建一个由
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()])
- 参数::
type –
Type
localPos –
QPointF
scenePos –
QPointF
globalPos –
QPointF
button –
MouseButton
buttons –
MouseButton
的组合修饰符 -
KeyboardModifier
的组合源 –
MouseEventSource
设备 –
QPointingDevice
- __init__(type, localPos, scenePos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
- 参数::
type –
Type
localPos –
QPointF
scenePos –
QPointF
globalPos –
QPointF
button –
MouseButton
buttons –
MouseButton
的组合修饰符 -
KeyboardModifier
的组合设备 –
QPointingDevice
构建一个鼠标事件对象。
type
参数必须是 QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick 或 QEvent::MouseMove。点
localPos
、scenePos
和globalPos
分别指定鼠标光标相对于接收小部件或项、窗口和屏幕或桌面的位置。引发事件的
button
以 Qt::MouseButton 枚举的值给出。如果事件type
为 MouseMove,则此事件适当的按钮为 Qt::NoButton。buttons
是事件发生时所有按钮的状态,modifiers
是所有键盘修饰符的状态。- __init__(arg__1)
- 参数::
arg__1 –
QMouseEvent
- __init__(type, localPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
- 参数::
type –
Type
localPos –
QPointF
button –
MouseButton
buttons –
MouseButton
的组合修饰符 -
KeyboardModifier
的组合设备 –
QPointingDevice
注
此函数已弃用。
请使用另一个构造函数代替(需要全局位置)。
构建一个由
device
发起的事件对象。type
参数必须是 QEvent::MouseButtonPress、QEvent::MouseButtonRelease、QEvent::MouseButtonDblClick 或 QEvent::MouseMove 之一。localPos
是鼠标光标相对于接收窗口或项的位置。窗口位置设置为与localPos
相同的值。引发事件的button
以 Qt::MouseButton 枚举的值给出。如果事件type
是 MouseMove,则此事件适当的按钮为 Qt::NoButton。事件发生时的鼠标和键盘状态由buttons
和modifiers
指定。globalPosition()
被初始化为pos()
,这可能不适合。请使用其他构造函数显式指定全局位置。- __repr__()#
- 返回类型::
对象
- flags()#
- 返回类型::
MouseEventFlag
的组合
返回鼠标事件标志。
鼠标事件标志提供了有关鼠标事件的其他信息。
另请参阅
flags()
请使用
globalPosition()
.toPoint() 代替。返回事件发生 时鼠标光标的全局位置。这在异步窗口系统(如X11)中非常重要。每次您根据鼠标事件移动小部件时,globalPos()可能与当前的指针位置差别很大,与
pos()
以及 QWidget::mapToGlobal(pos()
) 不同。- globalX()#
- 返回类型::
int
注
此函数已弃用。
使用
globalPosition()
instead.x()
instead.返回事件发生时鼠标光标的全局x位置。
另请参阅
- globalY()#
- 返回类型::
int
注
此函数已弃用。
使用
globalPosition()
.y()
instead.返回事件发生时鼠标光标的全局y位置。
另请参阅
使用
position()
instead.以QPointF的形式返回鼠标光标相对于接收到事件的窗口或元素的位置。
如果您将窗口作为鼠标事件的结果移动,请使用
screenPos()
返回的屏幕位置,以避免抖动效果。另请参阅
使用
position()
instead.返回鼠标光标的相对位置,相对于接收到事件的控件。
如果移动窗口是由于鼠标事件导致的,则使用
globalPos()
返回的全局位置,以避免抖动。另请参阅
请使用
globalPosition()
代替。以QPointF的形式返回相对于接收到事件屏幕的鼠标光标位置。
另请参阅
请使用pointingDevice()
代替。
返回关于鼠标事件源的详细信息。
鼠标事件源可用于区分真实和伪造的鼠标事件。后者是由操作系统或Qt自身从触摸事件合成的事件。这个枚举告诉您它从何处合成;但通常更有用的是知道它从哪个设备合成,因此请尝试使用pointingDevice()
代替。
注
许多平台不提供此类信息。在这样的平台上,总是返回Qt::MouseEventNotSynthesized。
注
在 Qt 5 基础代码中,源代码(source())通常被用于区分来自真鼠标事件和由某些遗留 QQuickItem 或 QWidget 子类无法响应的 QTouchEvent
合成的额外事件。但是,无法确定它是由 QTouchEvent
或 QTabletEvent
合成的,并且丢失了其他信息。`pointingDevice()` 能够告诉你它来自的特定设备,因此你可能需要检查 `pointingDevice()->type()` 或 `pointingDevice()->capabilities()` 来确定如何对此事件做出响应。但最好是直接对原始事件做出响应,而不仅仅是处理鼠标事件。
另请参阅
source()
使用 scenePosition()
替代。
返回鼠标光标相对于接收事件的窗口的位置。
如果移动窗口是由于鼠标事件导致的,则使用globalPos()
返回的全局位置,以避免抖动。
另请参阅
- x(#
- 返回类型::
int
注
此函数已弃用。
使用 position()
.x() 替代。
返回鼠标光标相对于接收事件的窗口的 x 位置。
- y(#
- 返回类型::
int
注
此函数已弃用。
使用 position()
.y() 替代。
返回鼠标光标相对于接收事件的窗口的 y 位置。