我在
pyQt中有一个
QTableWidget
,具有单行选择集。我正在连接 itemSelectionChanged
来调用我的行选择函数并对所选行执行操作。我还想检测用户何时在 QTableWidget
内选择,但选择空白区域(未选择任何行),以便我可以取消选择任何选定的行。类似于“Windows 资源管理器”处理文件选择的方式。
选择
QTableWidget
内的空白区域时会触发什么信号?如何才能做到这一点?
检查鼠标按下事件以查看单击的项目是否为
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)