2011-08-24 47 views
1

QGLWidget和QTreeView上的自定義上下文菜單有問題。我有QTreeview和QGLWidget添加到一個普通的小工具與拆分器。我通過以下代碼打開上下文菜單。QGLWidget上的上下文菜單問題

setContextMenuPolicy(Qt::CustomContextMenu); 
QMenu::exec(actions, mapToGlobal(QPoint(x, y)),actions.at(0),this); 

actions是QActions的列表。

當鼠標按下QGLWidget時,如果滿足某些條件,鼠標光標會改變。在右鍵單擊打開上下文菜單後,如果在菜單項之一上按下鼠標,則一切正常。如果鼠標按下沒有發生在上下文菜單的某個項目上,上下文菜單關閉並且問題開始。問題是鼠標光標不會改變,即使在鼠標按下時所有條件都滿足。我不確定QWidget是否失去了重點。所以,我試圖在鼠標按下事件中設置焦點。但沒有太大的幫助。任何建議來解決這個問題。

謝謝!

+0

你有沒有嘗試過重新實現QGLWidget :: contextMenuEvent(QContextMenuEvent *事件),看看它是否有所作爲?這就是我創建上下文菜單的方式。 – cmannett85

+0

謝謝。是的,我已經嘗試過在上下文菜單事件中創建上下文菜單,但是並不順利。 – krishna

回答

0

我想問題可能是該事件沒有傳遞到父窗口小部件。 只需在您的鼠標添加以下語句mouseReleaseEvent()

QGLWidget :: mouseReleaseEvent(event);