Hallo zusammen,
ich war etwas verwundert, als ich kein QContexMenu-Klasse gefunden habe. Ich würde nun eine eigene Klasse abgeleitet von QMenu implementiert, die die mousePressEvent des Widgets auf dem der "MouseRightDown" event geschieht, implementiert.
Habe ich etwas übersehen, oder gehe ich in die richtige Richtung?
Grüße
Alexander
Kontextmenüs
-
alex_eisen
- Beiträge: 2
- Registriert: 7. September 2007 12:12
Was mich bei contextMenuEvent(...) etwas verwundert, ist dass wenn bei geöffnetem Kontextmenü mit der rechten Maustaste in ein anderes Widget geklickt wird, dieses Event zum Schließen des Menüs verwendet wird und das neu geklickte widget kein event bekommt.
Verwende ich hingegen mousePressEvent kann mit rechter Maustaste von widget zu widget "gesprungen werden". Hier meine Implementierungen in PyQt (vielleicht fehlt ja was)
Verwende ich hingegen mousePressEvent kann mit rechter Maustaste von widget zu widget "gesprungen werden". Hier meine Implementierungen in PyQt (vielleicht fehlt ja was)
Code: Alles auswählen
class PopupMenue(QMenu):
def mousePressEvent(self, event):
if event.type() == QEvent.MouseButtonPress and \
event.button() == Qt.RightButton:
if self.isHidden():
self.popup(event.globalPos()) # Open popup only when hidden
else:
self.close() # Close popup
def contextMenuEvent(self, event):
if self.isHidden():
self.popup(event.globalPos()) # Open popup only when hidden
else:
self.close() # Close popup
Dann hast Du es falsch implementiert, bei mir funktioniert das einwandfrei.alex_eisen hat geschrieben:Was mich bei contextMenuEvent(...) etwas verwundert, ist dass wenn bei geöffnetem Kontextmenü mit der rechten Maustaste in ein anderes Widget geklickt wird, dieses Event zum Schließen des Menüs verwendet wird und das neu geklickte widget kein event bekommt.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.