我不明白为什么在书中 与Python和QT快速GUI编程, ,通过调用上下文菜单添加到中央小部件 addActions() 在主窗口 (self),像这样(第180页):

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

在哪里 self 是一个 QMainWindow, , 和 imageLabel 是一个 QLabel 将作为中央小部件设置为

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

现在,为什么主窗口会以某种方式关联(通过 self.addActions())到中央小部件的上下文菜单?不足以打电话 addActions() 直接在中央小部件上?实际上,以下确实创建了上下文菜单:

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

为什么这本书示例上下文菜单不这样?这不等同于更多参与 self.addActions(…) 形式?

PS: :我什至看到 qmainwindow.addactions()的文档 甚至没有提及任何第一个论点(self.imageLabel, , 多于)!我完全失去了为什么这本书使用上面的第一片片段而不是最后一个……帮助! :)

有帮助吗?

解决方案

在qmainwindow上使用self.addaction()允许所有qmainwindow childs(docks,statusbar,statusbar,工具栏,menubar,...)使用这些动作,而不仅仅是中央小部件。

但是获得细粒度上下文菜单控制的最佳方法是使用customContextMenureQuested Signal(http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwidget.html#customcontextmenurequested).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top