Frage

Ich verstehe nicht, warum in dem Buch Rapid-GUI-Programmierung mit Python und Qt , ein Kontextmenü zu einem zentralen Widget hinzugefügt von addActions() Aufruf im Hauptfenster ( . self), wie so (S. 180):

self.addActions(self.imageLabel,
                (editInvertAction, …))

wo self ein QMainWindow ist, und imageLabel ist ein QLabel Satz als zentrales Widget mit

# Added actions will be put in a context menu:
self.imageLabel.setContextMenuPolicy(Qt.ActionsContextMenu)
self.setCentralWidget(self.imageLabel)

Nun, warum sollte das Hauptfenster in irgendeiner Weise in Verbindung gebracht werden (durch self.addActions()) in das Kontextmenü des zentralen Widget? Ist es nicht genug addActions() direkt auf das zentrale Widget anrufen? In der Tat führt die folgenden ein Kontextmenü erstellen:

self.imageLabel.addActions((editInvertAction, …))

Warum funktioniert das Buch Beispiel der Kontext auf diese Weise Menü? das nicht gleichbedeutend mit der mehr beteiligt self.addActions(…) Form ist?

PS : Ich sehe auch, dass die Dokumentation für QMainWindow .addActions () erwähnt nicht einmal jedes erstes Argument (self.imageLabel, oben)! Ich bin völlig verloren, warum das Buch verwendet den ersten Schnipsel oben anstatt die letzten ... Hilfe! :)

War es hilfreich?

Lösung

Mit self.addAction () auf QMainWindow erlauben alle QMainWindow Childs (Docks, StatusBar, Symbol- MenuBar, ...) Thesen Aktionen zu verwenden, nicht nur das zentrale Widget.

Aber der beste Weg, um eine feinkörniges Kontextmenü Kontrolle zu bekommen, ist das customContextMenuRequested Signal zu verwenden ( http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top