PySide6.QtGui.QMouseEvent¶
- 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__(arg__1)¶
- Parameters:
arg__1 –
QMouseEvent
- __init__(type, localPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
- Parameters:
type –
类型localPos –
QPointFbutton –
MouseButtonbuttons –
MouseButton的组合modifiers –
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(),这可能不合适。请使用其他构造函数来明确指定全局位置。- __init__(type, localPos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
- Parameters:
type –
类型localPos –
QPointFglobalPos –
QPointFbutton –
MouseButtonbuttons –
MouseButton的组合modifiers –
KeyboardModifier的组合设备 –
QPointingDevice
构造一个源自
device的鼠标事件对象。type参数必须是 QEvent::MouseButtonPress、QEvent::MouseButtonRelease、QEvent::MouseButtonDblClick 或 QEvent::MouseMove。localPos是鼠标光标相对于接收部件或项目的位置。光标在屏幕坐标中的位置由globalPos指定。窗口位置设置为与localPos相同的值。导致事件的button作为 Qt::MouseButton 枚举的值给出。如果事件type是 MouseMove,则此事件的适当按钮是 Qt::NoButton。buttons是事件发生时所有按钮的状态,modifiers是所有键盘修饰符的状态。- __init__(type, localPos, scenePos, globalPos, button, buttons, modifiers[, device=QPointingDevice.primaryPointingDevice()])
- Parameters:
type –
类型localPos –
QPointFscenePos –
QPointFglobalPos –
QPointFbutton –
MouseButtonbuttons –
MouseButton的组合modifiers –
KeyboardModifier的组合设备 –
QPointingDevice
构造一个鼠标事件对象。
type参数必须是 QEvent::MouseButtonPress、QEvent::MouseButtonRelease、QEvent::MouseButtonDblClick 或 QEvent::MouseMove。点
localPos、scenePos和globalPos分别指定了鼠标光标相对于接收小部件或项目、窗口以及屏幕或桌面的位置。导致事件的
button作为Qt::MouseButton枚举的值给出。如果事件的type是MouseMove,则此事件的适当按钮是Qt::NoButton。buttons是事件发生时所有按钮的状态,modifiers是所有键盘修饰符的状态。- __init__(type, localPos, scenePos, globalPos, button, buttons, modifiers, source[, device=QPointingDevice.primaryPointingDevice()])
- Parameters:
type –
类型localPos –
QPointFscenePos –
QPointFglobalPos –
QPointFbutton –
MouseButtonbuttons –
MouseButton的组合modifiers –
KeyboardModifier的组合source –
MouseEventSource设备 –
QPointingDevice
- __repr__()¶
- Return type:
字符串
- flags()¶
- Return type:
返回鼠标事件标志。
鼠标事件标志提供了关于鼠标事件的额外信息。
另请参阅
flags()使用
globalPosition().toPoint() 代替。返回鼠标光标在事件发生时的全局位置。这在像X11这样的异步窗口系统中非常重要。每当你根据鼠标事件移动小部件时,globalPos()可能与当前指针位置
pos()以及QWidget::mapToGlobal(pos())有很大差异。- globalX()¶
- Return type:
整数
注意
此函数已弃用。
使用
globalPosition()的x()代替。返回事件发生时鼠标光标的全局x位置。
另请参阅
- globalY()¶
- Return type:
整数
注意
此函数已弃用。
使用
globalPosition().y()代替。返回事件发生时鼠标光标的全局y位置。
另请参阅
使用
position()代替。返回鼠标光标的位置作为QPointF,相对于接收事件的小部件或项目。
如果您因鼠标事件移动小部件,请使用
screenPos()返回的屏幕位置以避免抖动。另请参阅
使用
position()代替。返回鼠标光标的位置,相对于接收到事件的小部件。
如果您因为鼠标事件而移动小部件,请使用
globalPos()返回的全局位置来避免抖动。另请参阅
请使用
globalPosition()代替。返回鼠标光标的位置作为QPointF,相对于接收到事件的屏幕。
另请参阅
- source()¶
- Return type:
请使用
pointingDevice()代替。返回有关鼠标事件源的信息。
鼠标事件源可用于区分真实和人工鼠标事件。后者是由操作系统或Qt本身从触摸事件合成的事件。此枚举告诉您它是从何处合成的;但通常更有用的是知道它是从哪个设备合成的,因此请尝试使用
pointingDevice()代替。注意
许多平台不提供此类信息。在此类平台上,始终返回Qt::MouseEventNotSynthesized。
注意
在基于Qt 5的代码中,source()经常被用来尝试区分来自实际鼠标的鼠标事件和那些由于某些遗留的QQuickItem或QWidget子类没有对
QTouchEvent做出反应而合成的事件。然而,你无法区分它是从QTouchEvent还是QTabletEvent合成的,并且其他信息也丢失了。pointingDevice()告诉你它来自的具体设备,因此你可以检查pointingDevice()->type()或pointingDevice()->capabilities()来决定如何对此事件做出反应。但更好的做法是对原始事件做出反应,而不是只处理鼠标事件。另请参阅
source()请使用
scenePosition()代替。返回鼠标光标的位置作为QPointF,相对于接收到事件的窗口。
如果您因鼠标事件移动小部件,请使用
globalPos()返回的全局位置以避免抖动。另请参阅
- x()¶
- Return type:
整数
注意
此函数已弃用。
使用
position().x() 代替。返回鼠标光标相对于接收到事件的小部件的x位置。
- y()¶
- Return type:
整数
注意
此函数已弃用。
使用
position().y() 代替。返回鼠标光标相对于接收到事件的小部件的y位置。