2012-06-25 87 views
0

我似乎無法在QTreeWidget中獲得任何鼠標點擊。我試過...什麼能阻止mousePressEvent或事件過濾鼠標點擊事件?

  • ...覆蓋mousePressEvent,但它永遠不會運行。甚至沒有記錄消息。
  • ...使用事件過濾器。它適用於所有,但鼠標點擊。
  • ...使用代表。他們的編輯事件工作正常,但只有當一個項目,這是不夠的
  • ...確保一切都被添加到佈局。我使用QTCreator,輸出是使用layout.addWidget()。我還將小部件實例添加到主窗口中的佈局。

我能夠使用的答案,小部件註冊作爲QTreeWidget像這樣的事件過濾器:

# In __init___ 
    # self.tree is the QTreeWidget 
    self.tree.viewport().installEventFilter(self) 



def eventFilter(self, target, event): 
    """ 
    This widget is an event filter for the tree, so this function is triggered 
    automatically 
    """ 
    # Print on right-click 
    if (event.type() == QEvent.MouseButtonPress and 
     event.button() == Qt.RightButton): 
     print("Right Click") 

    # Don't block/accept the event 
    return False 
+0

你能顯示一些代碼嗎? – Junuxx

回答

4

,因爲你可以看到(和點擊)上QTreeWidget實際上是它的viewport()。你可以用sholud安裝事件過濾器viewport()