PyQt4-удалить виджет элемента из QListWidget
у меня есть 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
Простоя 1.8
Windows 7
3 ответов
takeItem() должно работать:
for SelectedItem in self.ListDialog.ContentList.selectedItems():
self.ListDialog.ContentList.takeItem(self.ListDialog.ContentList.row(SelectedItem))
удаление элемента из ListWidget:
item = self.listWidget.takeItem(self.listWidget.currentRow())
item = None
странно, что нет прямого способа удалить элементы из 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())