Von seinen Namen implementieren möchten, die mousePressEvent
für Mausklicks verantwortlich ist, während die wheelEvent
nur zum Scrollen ist. Die wheelEvent
fängt nicht das Rad klicken klicken. So wird die Qt's API entwickelt, wenn es um die Verarbeitung von Mausereignissen geht.
Um zu separieren, welche Maustaste gedrückt wird (rechts, Rad oder links), verwenden Sie button
property of QMouseEvent
.
Dies ist, wie der Code wie mit C aussehen würde ++ (Ich stelle mir es einfach, es zu pyside
zu übersetzen ist)
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;
// ...
}
}
Also, für pyside, brauchen Sie nur die button
Eigenschaft event
in mousePressEvent
vergleichen und sehen, ob es , Qt.RightButton
oder Qt.MidButton
ist. Ich hoffe, das hilft.
Das Rad wird wahrscheinlich als mittlerer Knopfklick interpretiert? –
@FrankOsterfeld Das Rad wird als Scroll und nicht als mittlerer Tastenklick interpretiert. Wenn ich eine Ereignisbehandlungsfunktion für Radmitte-Taste schreibe, klicken Sie in WheelEvent, Maus Drücken erhält das mittlere Knopfklickereignis – Johnnylin
@Johnnylin. Genau so soll es funktionieren. Ein Mausrad kann sowohl zum Scrollen ** als auch zum Klicken verwendet werden. Die meisten modernen Mäuse haben drei Klickknöpfe, und viele haben fünf. Sie können zwischen ihnen unterscheiden, indem Sie die Methoden 'button()' und/oder 'buttons()' eines [QMouseEvent] (http://doc.qt.io/qt-4.8/qmouseevent.html) untersuchen. – ekhumoro