1

我不明白为什么在使用 Python 和 Qt 进行快速 GUI 编程一书中,通过调用addActions() 主窗口( )将上下文菜单添加到中央小部件self,如下所示 (p. 180):

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

其中self是 a QMainWindow,并且imageLabelQLabel作为中心小部件的集合

# 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上面的)!我完全不明白为什么这本书使用上面的第一个片段而不是最后一个片段……救命!:)

4

1 回答 1

1

在 QMainWindow 上使用 self.addAction() 允许所有 QMainWindow 子项(Docks、StatusBar、ToolBar、MenuBar,...)使用这些操作,而不仅仅是中央小部件。

但获得细粒度上下文菜单控件的最佳方法是使用 customContextMenuRequested 信号 ( http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#customContextMenuRequested )。

于 2010-08-30T08:06:45.720 回答