7

我有一个 QListWidget,我需要删除一些项目。

根据我的研究,这通常是一件不愉快的事情。

我已经阅读了大量的解决方案,但没有一个适用于我的特定场景。
目前,我只有实际的 Item Widgets 需要处理;不是他们的价值观或指数。

这是因为我通过.selectedItems().

这是代码:

ItemSelect = list(self.ListDialog.ContentList.selectedItems())

for x in range (0, len(ItemSelect)):
    print self.ListDialog.ContentList.removeItemWidget(ItemSelect[x])

然而,这根本没有任何作用。
它不会引发错误,但不会删除所选项目。
我见过的删除项目的方法需要索引或项目的名称,我都没有。我只有实际的小部件。

如何删除它们?

我错过了什么吗?

我在用着:

Python 2.7.1
PyQt4 IDLE 1.8
Windows 7

4

3 回答 3

16

takeItem()应该工作:

for SelectedItem in self.ListDialog.ContentList.selectedItems():
    self.ListDialog.ContentList.takeItem(self.ListDialog.ContentList.row(SelectedItem))
于 2011-09-20T13:47:08.727 回答
8

从 ListWidget 中删除一个项目:

item = self.listWidget.takeItem(self.listWidget.currentRow())
item = None
于 2012-03-07T17:49:05.457 回答
2

这很奇怪,没有一些直接的方法可以从 QListWidget 中删除项目......试试这个:

listWidget = self.ListDialog.ContentList
model = listWidget.model()
for selectedItem in listWidget.selectedItems():
    qIndex = listWidget.indexFromItem(selectedItem)
    print 'removing : %s' %model.data(qIndex).toString()
    model.removeRow(qIndex.row())
于 2011-09-20T12:48:04.160 回答