Domanda

Non capisco il motivo per cui nel libro Rapid GUI di programmazione con Python e Qt , viene aggiunto un menu contestuale per un widget centrale chiamando addActions() nella finestra principale ( . self), in questo modo (p 180):

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

dove self è un QMainWindow, e imageLabel è un insieme QLabel come il widget centrale con

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

Ora, perché mai la finestra principale essere associato in qualche modo (attraverso self.addActions()) al menu contestuale del widget centrale? Non è abbastanza per chiamare addActions() direttamente sul widget centrale? In realtà, il seguente fa creare un menu di contesto:

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

Perché menu non l'esempio del libro del contesto in questo modo? non è questo equivale alla forma self.addActions(…) più coinvolti?

PS : Ho anche vedere che il documentazione per QMainWindow .addActions () non menziona neppure alcun primo argomento (self.imageLabel, sopra)! Sono completamente perso sul motivo per cui il libro utilizza il primo frammento di codice al posto del l'ultimo ... Aiuto! :)

È stato utile?

Soluzione

Uso self.addAction () su QMainWindow consentire a tutti di Childs QMainWindow (Darsena, StatusBar, ToolBar, MenuBar, ...) da utilizzare tesi azioni, non solo il widget di centrale.

Ma il modo migliore per ottenere un controllo di menu di scelta rapida a grana fine è quello di utilizzare il segnale customContextMenuRequested ( http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top