未选择行时发出 PyQt QTableWidget 信号

问题描述 投票:0回答:1

我在

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

选择

QTableWidget
内的空白区域时会触发什么信号?如何才能做到这一点?

python events pyqt selection qtablewidget
1个回答
2
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.