如何区分滚轮按钮单击事件和鼠标按下事件?
How can I distinguish wheel button click event from mouse press event?
我想知道如何区分滚轮点击事件和鼠标按下事件。因为我想在 pyside 中对这两个事件做不同的处理。目前,每次我单击滚轮按钮时,事件都会被 mousepressevent 捕获。谁能解释一下?
编辑:我想在 class 的子class
qgl 小部件 class
从名字上看,mousePressEvent
负责鼠标点击,而 wheelEvent
只负责滚动。 wheelEvent
不会捕捉到滚轮按钮的点击。这就是 Qt 的 API 在处理鼠标事件时的设计方式。
为了区分按下的是哪个鼠标按钮(右、滚轮或左),请使用 button
property of QMouseEvent
。
这就是代码使用 C++ 时的样子(我想将它翻译成 pyside
很容易)
void GLWidget::mousePressEvent(QMouseEvent *event) // redefine the mouse event
{
switch( event->button() ) {
case Qt::LeftButton:
// do stuff for left button pressed
break;
case Qt::MiddleButton:
// do stuff for wheel button pressed
break;
// ...
}
}
所以,对于pyside,只需要比较mousePressEvent
中event
的button
属性,看是否是Qt.LeftButton
,Qt.RightButton
或 Qt.MidButton
。希望对您有所帮助。
我想知道如何区分滚轮点击事件和鼠标按下事件。因为我想在 pyside 中对这两个事件做不同的处理。目前,每次我单击滚轮按钮时,事件都会被 mousepressevent 捕获。谁能解释一下?
编辑:我想在 class 的子class qgl 小部件 class
从名字上看,mousePressEvent
负责鼠标点击,而 wheelEvent
只负责滚动。 wheelEvent
不会捕捉到滚轮按钮的点击。这就是 Qt 的 API 在处理鼠标事件时的设计方式。
为了区分按下的是哪个鼠标按钮(右、滚轮或左),请使用 button
property of QMouseEvent
。
这就是代码使用 C++ 时的样子(我想将它翻译成 pyside
很容易)
void GLWidget::mousePressEvent(QMouseEvent *event) // redefine the mouse event
{
switch( event->button() ) {
case Qt::LeftButton:
// do stuff for left button pressed
break;
case Qt::MiddleButton:
// do stuff for wheel button pressed
break;
// ...
}
}
所以,对于pyside,只需要比较mousePressEvent
中event
的button
属性,看是否是Qt.LeftButton
,Qt.RightButton
或 Qt.MidButton
。希望对您有所帮助。