【问题标题】:Delete QTreeWidgetItem in PyQt?在 PyQt 中删除 QTreeWidgetItem?
【发布时间】:2012-08-21 11:22:40
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我相信你的方法是正确的。在 C++ 中,您可以简单地删除该项目,从而调用其析构函数,这将从小部件中删除该项目。但我认为 Python 没有直接的方法。

标签: python pyqt qtreewidget


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    import sip
    ...
    sip.delete(current)
    

    PySide 的绑定生成器 shiboken 有 a similar module

    【讨论】:

    • 我以后会用这个,但我选择了另一个答案。不过谢谢!
    • 这是简短而甜蜜的答案。谢谢!
    猜你喜欢
    • 2016-10-12
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2014-02-21
    • 2023-04-05
    相关资源
    最近更新 更多