2011-12-15 26 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