在PyQt中删除QTreeWidgetItem?

Rod*_*Day 11 python pyqt qtreewidget

我发现找到一种删除我所选择的简单方法令人沮丧QTreeWidgetItem.

我的拼凑方法涉及将树的当前选择设置为current,然后:

if current.parent() is not None:
   current.parent().removeChild(current)
else:
   self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
Run Code Online (Sandbox Code Playgroud)

这并不可怕,但是没有一个命令可以直接删除该项目吗?

ekh*_*oro 14

QTreeWidget班有一个invisibleRootItem()功能,它允许有点整洁的办法:

root = tree.invisibleRootItem()
for item in tree.selectedItems():
    (item.parent() or root).removeChild(item)
Run Code Online (Sandbox Code Playgroud)


ale*_*sdm 8

PyQt4使用sip为Qt类生成python绑定,因此您可以通过sip python API显式删除C++对象:

import sip
...
sip.delete(current)
Run Code Online (Sandbox Code Playgroud)

用于PySide的绑定生成器shiboken具有类似的模块.