削除したい子を持つQGroupBox
ウィジェットがあります。それ、どうやったら出来るの? removeWidget
、removeChild
、removeItem
、または ドキュメント に類似するものが見つかりません。私はレイアウトから物事を削除する方法しか見ることができませんが、それは明らかに、実際のウィジェットからそれを削除しません。
さて、これは機能します:削除したいウィジェットで、widget.setParent(None)
を呼び出します。レイアウトに追加するとウィジェットがコンテナに追加されるのが好きですが、レイアウトから削除しても…楽しいものではありません。
ウィジェットに依存する子ウィジェットがない場合、使用できると思います:
layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None
私のテストでは、それがあなたがしなければならない子を持つウィジェットであるとき:
import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None
クラスまたはグローバルレベルでウィジェットの変数名がない場合でも、layout.takeAt(index)を使用してレイアウトから削除し、QLayoutItem.widget()メソッドでこの関数が返すQLayoutItemからウィジェットポインターを取得できます。その場合、関数の外部で参照されないため、変数名をNoneに割り当てる必要はありません。
両方の方法を試して、何が効果的かを確認してください(何度も繰り返してメモリをリークしないでください)。