Удалить QTreeWidgetItem в PyQt?
Я нахожу это удручающе трудно найти простой способ, чтобы удалить выбранный QTreeWidgetItem
.
мой метод пэчворка включает в себя установку текущего выбора дерева в current
и затем:
if current.parent() is not None:
current.parent().removeChild(current)
else:
self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
это не ужасно,но разве нет команды, которая просто удаляет элемент?
2 ответов
на QTreeWidget
классе invisibleRootItem()
функция, которая позволяет несколько более аккуратный подход:
root = tree.invisibleRootItem()
for item in tree.selectedItems():
(item.parent() or root).removeChild(item)
PyQt4 использует sip для создания Привязок python для классов Qt, поэтому вы можете удалить объект C++ явно через API питона sip:
import sip
...
sip.delete(current)
генератор привязки для PySide, shiboken, имеет подобный модуль.