Je ne comprends pas pourquoi dans le livre GUI rapide programmation avec Python et Qt, un menu contextuel est ajouté à un widget central en appelant addActions()
dans la fenêtre principale (self
), comme si (p 180.):Qt: le meilleur moyen d'ajouter un menu contextuel au widget central?
self.addActions(self.imageLabel,
(editInvertAction, …))
où self
est un QMainWindow
et imageLabel
est un ensemble QLabel
comme le widget central avec
self.imageLabel.setContextMenuPolicy(Qt.ActionsContextMenu) # Added actions will be put in a context menu
self.setCentralWidget(self.imageLabel)
maintenant, pourquoi la fenêtre principale serait-elle associée d'une certaine façon (par l'intermédiaire de self.addActions()
) au menu contextuel du widget central? N'est-ce pas suffisant d'appeler addActions()
directement sur le widget central? En fait, ce qui suit crée un menu contextuel:
self.imageLabel.addActions((editInvertAction, …))
Pourquoi le livre n'indique-t-il pas le menu contextuel de cette façon? n'est-ce pas l'équivalent du formulaire self.addActions(…)
plus impliqué?
PS: Je vois même que le documentation for QMainWindow.addActions() ne mentionne même pas le premier argument (self.imageLabel
, au-dessus)! Je suis complètement perdu quant à la raison pour laquelle le livre utilise le premier extrait ci-dessus au lieu du dernier ... Aide! :)
Merci! Les actions passées au widget central sont déjà utilisées par les enfants de QMainWindow (menu, etc.), et je ne vois pas le menu contextuel ailleurs qu'en dehors du widget central. Donc, je ne suis pas sûr de comprendre votre réponse ... :) – EOL
Hum, désolé, je n'ai pas vu le "self.imageLabel", à l'intérieur du premier self.addActions. Peut-être que le livre est juste faux. (Quelque chose comme QWidget.addAction (self.imageLabel, (editInvertAction, ...)) fonctionnerait probablement, mais c'est moche). Utilisez self.imageLabel.addActions ou, mieux, le signal customContextMenuRequested. – iksaif
Le code du livre semble faire ce qui est prévu, cependant. Merci pour votre contribution utile! – EOL