Delete QTreeWidgetItem in PyQt?

10,948

Solution 1

The QTreeWidget class has an invisibleRootItem() function which allows for a somewhat neater approach:

root = tree.invisibleRootItem()
for item in tree.selectedItems():
    (item.parent() or root).removeChild(item)

Solution 2

PyQt4 uses sip to generate the python bindings for Qt classes, so you can delete the C++ object explicitly through the sip python API:

import sip
...
sip.delete(current)

The binding generator for PySide, shiboken, has a similar module.

Share:
10,948
RodericDay
Author by

RodericDay

Updated on June 04, 2022

Comments

  • RodericDay
    RodericDay about 2 years

    I'm finding it frustratingly hard to find a simple way to delete my selected QTreeWidgetItem.

    My patchwork method involves setting the tree's current selection to current and then:

    if current.parent() is not None:
       current.parent().removeChild(current)
    else:
       self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
    

    It's not horrible, but isn't there a command that straight up just removes the item?