Question

Je ne comprends pas pourquoi dans le livre GUI rapide de programmation avec Python et Qt , un menu contextuel est ajouté à un widget central en appelant addActions() dans la fenêtre principale ( . self), comme ceci (p 180):

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

self est un QMainWindow, et imageLabel est un ensemble de QLabel comme le widget central avec

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

Maintenant, pourquoi la fenêtre principale associée d'une certaine façon (par self.addActions()) dans le menu contextuel du widget central? Est-il pas assez d'appeler directement addActions() sur le widget central? En fait, ce qui suit ne crée un menu contextuel:

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

Pourquoi ne pas l'exemple du livre dans le menu contextuel de cette façon? est-ce pas équivalent à plus impliqué sous forme de self.addActions(…)?

PS : Je vois même que le documentation pour QMainWindow .addActions () ne mentionne même pas le premier argument (self.imageLabel, au-dessus)! Je suis complètement perdu la raison pour laquelle le livre utilise le premier extrait ci-dessus au lieu de la dernière ... Aide! :)

Était-ce utile?

La solution

Utilisation self.addAction () sur QMainWindow permettre à tous Childs QMainWindow (Docks, StatusBar, ToolBar, MenuBar, ...) d'utiliser des thèses actions, non seulement le widget central.

Mais la meilleure façon d'obtenir un contrôle de menu contextuel grain fin est d'utiliser le signal customContextMenuRequested ( http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top