选择无行时发出的PyQt QTableWidget信号

时间:2015-04-01 17:25:28

标签: python pyqt pyqt4

我在 pyQt 中有一个QTableWidget,其中包含单行选择集。我正在连接itemSelectionChanged以调用我的行选择功能并对所选行执行操作。我还想检测用户何时在QTableWidget内选择,但选择空白区域(未选择任何行),以便我可以取消选择任何选定的行。类似于“Windows资源管理器”如何处理文件选择。

选择QTableWidget内的空白区域时会触发什么信号?如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

检查鼠标按下事件以查看所点击的项目是否为None

class Table(QtGui.QTableWidget):
    def mousePressEvent(self, event):
        if self.itemAt(event.pos()) is None:
            self.clearSelection()
        QtGui.QTableWidget.mousePressEvent(self, event)

或者,如果您不能进行子类化,请使用事件过滤器:

class Window(QtGui.QWidget):
    def __init__(self):
        ...
        self.table.viewport().installEventFilter(self)

    def eventFilter(self, source, event):
        if (event.type() == QtCore.QEvent.MouseButtonPress and
            source is self.table.viewport() and
            self.table.itemAt(event.pos()) is None):
            self.table.clearSelection()
        return QtGui.QWidget.eventFilter(self, source, event)