12

我发现很难找到一种简单的方法来删除我选择的QTreeWidgetItem.

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

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

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

4

2 回答 2

15

该类QTreeWidget有一个invisibleRootItem()函数,它允许一种更简洁的方法:

root = tree.invisibleRootItem()
for item in tree.selectedItems():
    (item.parent() or root).removeChild(item)
于 2012-08-26T23:13:15.627 回答
10

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

import sip
...
sip.delete(current)

PySide 的绑定生成器 shiboken 有一个类似的模块

于 2012-08-27T01:36:54.703 回答