Seite 1 von 1
Kontextmenüs
Verfasst: 7. September 2007 12:38
von alex_eisen
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
Verfasst: 7. September 2007 13:26
von macman
Du hast etwas übersehen:
contextMenuEvent ( QContextMenuEvent * event );
Verfasst: 7. September 2007 14:31
von alex_eisen
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)
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
Verfasst: 7. September 2007 15:44
von macman
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.
Dann hast Du es falsch implementiert, bei mir funktioniert das einwandfrei.