我正在使用QT4並創建了一個QGLWidget,我想在其中實現右鍵單擊上下文菜單。我只想在右鍵單擊並按下CTRL鍵的情況下顯示上下文菜單。當QT上下文菜單顯示時沒有keyReleaseEvent
我試圖通過設置一個控制標誌,當按下CTRL鍵,然後清除CTRL鍵釋放(通過keyReleaseEvent
)實現這一點。問題是,當上下文菜單啓動時,我沒有收到keyReleaseEvent
(不僅僅是CTRL,根本沒有發佈密鑰)。
例如:我按住CTRL,單擊鼠標右鍵,然後出現上下文菜單(仍然按住CTRL鍵)。沒有選擇菜單中的任何內容,我釋放CTRL鍵,但我的程序沒有收到keyPressEvent
。因此我的旗子永遠不會被清除,並且下一次用戶右鍵單擊(即使沒有保持控制),上下文菜單也會出現。
爲什麼當上下文菜單存在時,我沒有收到keyPressEvent
?
我正在使用QT 4.8(C++),並在Windows和Linux上測試了這個結果。
您是通過contextMenuEvent還是通過keyPressEvent打開上下文菜單? – Anthony 2012-04-19 22:28:37
只是爲了澄清,你想釋放CTRL導致上下文菜單消失? – Anthony 2012-04-19 22:32:48
不,我在鼠標按下事件期間通過exec直接打開它,並且我想在CTRL釋放後讓它打開。當某些東西被選中或在其他地方點擊時它應該關閉。 – 2012-04-19 23:21:24