QT:中央ウィジェットにコンテキストメニューを追加する最良の方法は?
-
01-10-2019 - |
質問
私は本の理由がわかりません PythonとQTを使用したラピッドGUIプログラミング, 、コンテキストメニューが呼び出して中央ウィジェットに追加されます addActions()
メインウィンドウに (self
)、そう(p。180):
self.addActions(self.imageLabel,
(editInvertAction, …))
どこ self
aです QMainWindow
, 、 と imageLabel
aです 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(…)
形?
詩: :私もそれを見ます qmainwindow.addactions()のドキュメント 最初の議論さえ言及していません(self.imageLabel
, 、 その上)!私は、この本が最後のスニペットの代わりに上の最初のスニペットを使用する理由について完全に迷子になりました…助けてください! :)
解決
qmainwindowでself.adcriftion()を使用すると、すべてのqmainwindowチャイルド(ドック、Statusbar、ツールバー、メノバーなど)がこれらのアクションを使用することを許可します。
しかし、細かいコンテキストメニューコントロールを取得する最良の方法は、CustomContextMenureQuested信号を使用することです(http://www.riverbankcomputing.co.uk/static/docs/pyqt4/html/qwidget.html#customcontextmenurequested).