我希望能够通过单击QTreeView中没有项目的部分来取消选择QTreeView中的项目,但是我似乎还是找不到这样做的方法。我截获了不在项目上的点击,但是QTreeView没有clicked
信号,所以我不知道该怎么做。
这实际上非常简单(在PyQt中):
class DeselectableTreeView(QtGui.QTreeView):
def mousePressEvent(self, event):
self.clearSelection()
QtGui.QTreeView.mousePressEvent(self, event)
Qt用于mousePressEvent
发射clicked
。如果在发送事件之前清除了选择,则如果单击了某个项目,则将其选中,否则将不会选择任何内容。非常感谢Patrice帮助我解决了这一问题:)
应当注意,这会从选择模型中发出相关信号,因此,如果您正在听这些信号,通常会导致不良行为(即,如果始终打开/关闭所选项目的视图,则会导致该页面正在快速关闭和打开)。您可以通过阻止选择模型的信号来解决这个问题