PyQT QListWidget:限制选择x项,禁用rubberband选择

2024-09-27 18:08:41 发布

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

我有一个QListWidget实例,具有以下属性:

self.listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.listWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectItems)
self.listWidget.setViewMode(QtGui.QListView.IconMode)

我想能够选择最多3个项目只需点击他们,而不是橡皮筋选择。第四次单击将取消选择所有以前选择的项目,并选择“取消当前项目”。应禁用橡皮筋选择。在

我做了一些类似的事情,但功能有限:我必须返回所选项目的max 3item.text()的列表。使用橡皮筋选择可能导致列表中的所有项目都被选中并作为items.text()的列表返回。在

^{pr2}$

橡皮筋选择不管怎样都能起作用,最后我可以选择所有的项目。这是我不想要的。 我可以通过操作QAbstractItemView.NoSelection来解决这个问题,但我认为这很混乱。 我宁愿使用setSelectionModel(QItemSelectionModel.NoUpdate)之类的东西,但不知道怎么用,也搞不懂。在

所有物品都有橡皮筋选择:不是我想要的

乐: 这就是我所做的:

self.listWidget.itemSelectionChanged.connect(self.get_selected_icons_list)
self.listWidget.itemDoubleClicked.connect(self.restore_selection)


......

 def get_selected_icons_list(self):

       ....
        else:
            if icons_filename_list.__len__() <= 2:
                self.listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)

            if icons_filename_list.__len__() >= 3:
                self.listWidget.setSelectionMode(QAbstractItemView.NoSelection)

            if not icons_filename_list:
                return None
            else:
                return icons_filename_list

    def restore_selection(self, *args):
        self.listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.listWidget.clearSelection()
        self.listWidget.setCurrentItem(args[0])

Tags: 项目textself列表iffilenamelisticons

热门问题