他のウィジェットのコンテナとして機能する単純なウィジェットを作成しています。ウィジェットの機能の 1 つは、クリックして展開/折りたたむことができることです。私の現在の方法は、基本的に、レイアウトのすべての子ウィジェットを検索して非表示にすることです。これを適切に処理する方法についてのヘルプを探しています。現在の実装には、少なくとも 1 つの重大な注意事項があります。折りたたまれている間はウィジェットを追加できないということです (ウィジェットは「非表示」状態で追加されます)。
setCollapsed
ウィジェットがクリックされたときに実行されるメソッドを次に示します。
def collapsed(self):
return self._isCollapsed
def setCollapsed(self, collapseBool):
self._isCollapsed = collapseBool
if self.layout()!=None:
childWidgets = [self.layout().itemAt(i).widget() for i in range(self.layout().count())]
for w in childWidgets:
if isinstance(w,QtGui.QWidget):
w.setHidden(collapseBool)
if collapseBool:
self._cachedMargin = self.layout().margin()
self.layout().setMargin(0)
else:
self.layout().setMargin(self._cachedMargin)