2012-08-26 31 views
9

私は選択したQTreeWidgetItemを削除する簡単な方法を見つけるのは難しいと感じています。PyQtでQTreeWidgetItemを削除しますか?

私のパッチワーク法は、currentとするツリーの現在の選択を設定することが含ま:

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

それは恐ろしいではないですが、まっすぐだけでアイテムを削除するコマンドはありませんか?あなたはthe sip python APIを通じて明示的にC++オブジェクトを削除することができますので、

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

私はあなたが正しい方法だと信じています。 C++では、単にアイテムを削除してデストラクタを呼び出すことができ、それによってウィジェットからアイテムが削除されます。しかし、Pythonから直接行う方法はないと思います。 – Avaris

答えて

10

QTreeWidgetクラスはややすっきりアプローチが可能になりますinvisibleRootItem()機能を持ってい

import sip 
... 
sip.delete(current) 

PySide(shiboken)の結合発生剤はa similar moduleである。

4

PyQt4は、QtのクラスのPythonバインディングを生成するために、SIPを使用しています:

+0

ニース+1。私はそれを知らなかった。 – Avaris

+0

私はこれを将来使用しますが、私は他の答えに行きました。しかし、ありがとう! – RodericDay

関連する問題