QT:中央ウィジェットにコンテキストメニューを追加する最良の方法は?

StackOverflow https://stackoverflow.com/questions/3582554

質問

私は本の理由がわかりません 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).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top