调整 QListView 的点击行为?

Tweak QListView behaviour on click?

当您有 QListView 并单击视图中的项目时,默认行为是取消选择(取消选择)任何现有的选定项目,然后将单击的项目设置为选定以及“当前 item/index”。

我该如何更改才能使这样的点击对选择没有影响,但会将点击的项目设置为“当前 item/index”?

NB 实验表明视图的 selectionChanged 槽在视图的 clicked 信号触发之前被调用。因此,一种解决方法是记录取消选择的项目(在 selectionChanged 插槽中可用)并在检测到(即时)点击已被触发时再次将选择应用于这些项目。但这会很笨拙:是否有更优雅的方式可用?

多亏了 musicamante 的评论,我才能够设计出我想要的东西:

def mousePressEvent(self, event):
    if self.selectionModel() and event.modifiers() == QtCore.Qt.NoModifier:
        pos = event.pos()
        index = self.indexAt(pos)
        if index.isValid():
            self.selectionModel().setCurrentIndex(index, QtCore.QItemSelectionModel.Current)
            return    
    super().mousePressEvent(event)

...允许按 Ctrl 键单击、按住 Shift 键单击等行为正常,但调整未修改的单击的正常行为。