我在 pyQt 中有一个QTableWidget
,其中包含单行选择集。我正在连接itemSelectionChanged
以调用我的行选择功能并对所选行执行操作。我还想检测用户何时在QTableWidget
内选择,但选择空白区域(未选择任何行),以便我可以取消选择任何选定的行。类似于“Windows资源管理器”如何处理文件选择。
选择QTableWidget
内的空白区域时会触发什么信号?如何实现这一目标?
答案 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)