我有一个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()
的列表返回。在
橡皮筋选择不管怎样都能起作用,最后我可以选择所有的项目。这是我不想要的。
我可以通过操作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])
目前没有回答
相关问题 更多 >
编程相关推荐