单击时调整QListView行为?

2024-09-29 21:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当您有一个QListView并单击视图中的某个项目时,默认行为是取消选择(取消选择)任何现有的选定项目,然后将单击的项目设置为选中,并设置为“当前项目/索引”

我该如何更改内容,以便像这样单击不会影响选择,但会将单击的项目设置为“当前项目/索引”

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


Tags: 项目方法视图内容信号方式记录插槽
1条回答
网友
1楼 · 发布于 2024-09-29 21:33:27

感谢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-click、Shift-click等正常运行,但调整未修改的单击的正常运行

相关问题 更多 >

    热门问题