我試圖實現一個「打開」按鈕,如果用戶按下並保存,用戶的應用程序菜單將會彈出;但只要用戶釋放鼠標,菜單應該消失。如果用戶在沒有選擇菜單上的應用程序的情況下釋放鼠標,則應該使用默認應用程序打開該文件。眼下QToolButton彈出菜單隻有當按下並保持
self.ui_open_btn.pressed.connect(self._onOpenBtnPressed)
self.ui_open_btn.triggered.connect(self._onOpenBtnTriggered)
def _onOpenBtnPressed(self):
self.ui_open_btn.showMenu()
def _onOpenBtnTriggered(self, action):
application_name = action.text()
# code to launch the application
,當用戶按下按鈕,會彈出菜單:我實現這個按鈕爲QToolButton
和連接信號如下。但是,當用戶釋放按鈕時,菜單仍然存在,並且通過單擊它來觸發菜單上的操作。我在DelayedPopup
和InstantPopup
模式下都嘗試過。只要菜單設置爲self.ui_open_btn
,我就不能再捕獲任何released
信號。如何在用戶釋放鼠標時隱藏菜單?如何通過釋放鼠標觸發菜單上的操作?
--added ---
我發現了另一個問題,關於使用QToolButton
:按下按鈕時,菜單總是彈出。相反,我想抓住pressed
信號,做一些檢查以確定菜單是否應該彈出。所以我通過繼承QPushButton
和QMenu
來改變我的方法來編寫自定義工具按鈕。請參閱下面的答案中提供的代碼。
謝謝。
你有沒有嘗試隱藏使用'released'信號菜單嗎? – mguijarr
@mguijarr:是的,我嘗試過'self.ui_open_btn.menu()。close()'和'self.ui_open_btn.menu()。hide()'。都沒有工作。我認爲問題是,只要菜單已設置爲'self.ui_open_btn',我不能再捕獲任何'釋放'信號。 – user110