2011-12-15 25 views
1

我用QTreeWidget製作了一個樹形結構,它運行良好。 但是,我有一個問題。 一般情況下,如果我想取消選擇所有的樹結構,我點擊樹區的空白區域。 QTreeWidget不支持那項工作(或我找不到小費?)PyQt4:確定點擊QTreeWidget的空白區域

子分類?還是別的什麼都可以解決問題? 確定點擊空白區域似乎是解決方案的關鍵,但我找不到信號或任何東西。

謝謝你的任何幫助:)

回答

1

一個子類可能是最簡單的選擇(雖然同樣的事情可能與事件過濾器實現)。

class TreeWidget(QTreeWidget): 
    ... 

    def keyPressEvent(self, event): 
     if (event.key() == Qt.Key_Escape and 
      event.modifiers() == Qt.NoModifier): 
      self.clearSelection() 
     else: 
      QTreeWidget.keyPressEvent(self, event) 

    def mousePressEvent(self, event): 
     if self.itemAt(event.pos()) is None: 
      self.clearSelection() 
     QTreeWidget.mousePressEvent(self, event) 
+0

謝謝你的建議是:在空白區域單擊,或按下Esc鍵時,當樹部件具有鍵盤焦點時

此示例代碼將清除選擇。它運作良好!但我修改上面的腳本有點... self.clearSelection()---> self.setCurrentItem(None) clearSelection方法顯然取消選擇小部件,但實際上TreeWidget有一個currentItem。所以,我沒有選擇任何東西。 – 2011-12-16 11:55:04