Pregunta

No entiendo por qué en el libro rápido GUI de programación con Python y Qt , se añade un menú contextual para un widget centro llamando addActions() en la ventana principal ( . self), al igual que (p 180):

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

donde self es un QMainWindow, y imageLabel es un conjunto QLabel como el widget central con

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

Ahora, ¿por qué la ventana principal de estar asociado de alguna manera (a través self.addActions()) al menú contextual del widget central? ¿No es suficiente para llamar addActions() directamente en el widget central? De hecho, el siguiente no crear un menú de contexto:

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

¿Por qué menú no el ejemplo de libro el contexto de esta manera? No es esto equivalente a la forma self.addActions(…) más involucrados?

PS : Incluso veo que la documentación para QMainWindow .addActions () ni siquiera menciona ningún primer argumento (self.imageLabel, arriba)! Estoy completamente perdido en cuanto a por qué el libro utiliza el primer fragmento anterior en lugar de la última ... Ayuda! :)

¿Fue útil?

Solución

Uso self.addAction () en QMainWindow permitir que todos los niño QMainWindow (muelles, StatusBar, barra de herramientas, barra de menú, ...) que utilizan las tesis acciones, no sólo el widget central.

Sin embargo, la mejor manera de conseguir un control de menú de contexto de grano fino es el uso de la señal customContextMenuRequested ( http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top