PyQt4:确定单击QTreeWidget的空白区域

时间:2011-12-15 06:52:44

标签: pyqt qtreewidget

我用QTreeWidget创建了一个树结构,效果很好。 但是,我有一个问题。 通常,如果我想取消选择所有树结构,我点击树区域的空白区域。 QTreeWidget不支持这项工作。(或者我找不到提示?)

子类?或其他什么可以解决问题? 确定点击空白区域似乎是解决方案的关键,但我找不到SIGNAL或其他任何东西。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

子类可能是最简单的选择(尽管使用事件过滤器可以实现同样的目的)。

此示例代码将在单击空白区域时清除选择,或者在树窗口小部件具有键盘焦点时按Esc键:

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)