7

QListWidgetがあり、いくつかのアイテムを削除する必要があります。

私が調査したことから、これは一般的に不快なことです。

私はたくさんの解決策を読みましたが、私の特定のシナリオに当てはまるものはありません。
現時点では、処理する実際のアイテムウィジェットしかありません。それらの値やインデックスではありません。

これは、を介してアイテム(削除する必要がある)を取得するためです.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 に答える