如何解决如何在 PyQt List Widget 中一次向上或向下移动多行?
我正在使用以下代码在 PyQt6 列表小部件中向上移动单个项目
def move_item_up_in_list_box(self):
row = self.listWidget.currentRow()
text = self.listWidget.currentItem().text()
self.listWidget.insertItem(row-1,text)
self.listWidget.takeItem(row+1)
self.listWidget.setCurrentRow(row-1)
但是我找不到在选择多行时获取索引位置的选项,但是 'self.listWidget.selectedItems()' 返回所选项目中的文本,我不知道如何向上或向下移动多行。
解决方法
只需循环遍历 selectedItems()
并使用 row()
获取每一行。
for item in self.listWidget.selectedItems():
row = self.listWidget.row(item)
# ...
考虑到选择模型通常会保持选择项目的顺序,因此您应该始终在移动项目之前重新排序项目,并记住如果您向下移动项目,它们应该反向移动 em> 订购。
def move_items(self,down=False):
items = []
for item in self.listWidget.selectedItems():
items.append((self.listWidget.row(item),item))
items.sort(reverse=down)
delta = 1 if down else -1
for row,item in items:
self.listWidget.takeItem(row)
self.listWidget.insertItem(row + delta,item)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。