Kontextmenüs

Alles rund um die Programmierung mit Qt
Antworten
alex_eisen
Beiträge: 2
Registriert: 7. September 2007 12:12

Kontextmenüs

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Du hast etwas übersehen:
contextMenuEvent ( QContextMenuEvent * event );
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.
alex_eisen
Beiträge: 2
Registriert: 7. September 2007 12:12

Beitrag 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        
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
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.
Antworten