如何区分滚轮按钮单击事件和鼠标按下事件?

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,只需要比较mousePressEventeventbutton 属性,看是否是Qt.LeftButtonQt.RightButtonQt.MidButton。希望对您有所帮助。