Я использую складную коробку из этого поста , и я попытался создать макет в этой складной коробке, в которую могут быть добавлены виджеты, в зависимости от пользователя. Однако эти виджеты перекрываются, потому что высота сворачиваемого фиксирована. Как я могу заставить высоту всегда оборачивать содержимое? Я попытался вызвать setContentLayout
снова из дочернего макета, но это не работает.
Класс GroupSubStyle
- это просто QGroupbox с пользовательскими виджетами в нем
class GridStyle(QGridLayout):
def __init__(self, parent, *args, **kwargs):
super(GridStyle, self).__init__(*args, **kwargs)
self.grid_pos = [0, 0]
self.styles = []
self.parent = parent
groupStyle = GroupSubStyle()
groupStyle.combo_plot.currentIndexChanged.connect(self._add_substyle)
self.addWidget(groupStyle, self.grid_pos[0], self.grid_pos[1])
self.grid_pos[1] += 1
self.styles.append(groupStyle)
def _add_substyle(self):
if self.styles[-1].combo_plot.currentText() != "N/A" and self.grid_pos != [3, 1]:
groupStyle = GroupSubStyle()
groupStyle.combo_plot.currentIndexChanged.connect(self._add_substyle)
self.addWidget(groupStyle, self.grid_pos[0], self.grid_pos[1])
self.grid_pos[1] += 1
self.styles.append(groupStyle)
if self.grid_pos[1] >= 3:
self.grid_pos[1] = 0
self.grid_pos[0] += 1
self.parent.setContentLayout(self)
Этот класс помещен в разборном здесь:
cbox_style = CollapsibleBox("Style")
self.grid_style = GridStyle(cbox_style)
cbox_style.setContentLayout(self.grid_style)
vbox.addWidget(cbox_style)