Нет, в Qt Designer вы такого не сделаете.
Пожалуйста, всегда предоставляйте код, который у вас уже написан.
Один из возможных вариантов, может выглядеть примерно так:
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QWidget, QPushButton, QFormLayout,\
QLineEdit, QListWidget, QListWidgetItem, QCheckBox, QApplication
class CustomWidget(QWidget):
def __init__(self, item, *args, **kwargs):
super(CustomWidget, self).__init__(*args, **kwargs)
self.oldSize = None
self.item = item
layout = QFormLayout(self)
layout.addRow('Я label', QLineEdit(self))
layout.addRow('Клик', QCheckBox(
'Скрыть кнопку ниже', self, toggled=self.hideChild))
self.button = QPushButton('Cпряч меня', self)
layout.addRow(self.button)
def hideChild(self, v):
self.button.setVisible(not v)
# Здесь важно: скрывая внутренние дочерние элементы управления,
# необходимо пересчитать высоту.
self.adjustSize()
def resizeEvent(self, event):
super(CustomWidget, self).resizeEvent(event)
self.item.setSizeHint(QSize(self.minimumWidth(), self.height()))
class CustomButton(QPushButton):
""" Кнопка как переключатель """
def __init__(self, item, *args, **kwargs):
super(CustomButton, self).__init__(*args, **kwargs)
self.item = item
self.setCheckable(True)
def resizeEvent(self, event):
super(CustomButton, self).resizeEvent(event)
self.item.setSizeHint(QSize(self.minimumWidth(), self.height()))
class Window(QListWidget):
def __init__(self):
super().__init__()
for _ in range(7):
# переключатель
item = QListWidgetItem(self)
btn = CustomButton(item, f'Folding {_+1}', self, objectName='testBtn')
self.setItemWidget(item, btn)
item = QListWidgetItem(self)
# Скрыть/показать следующие пункты, нажав кнопку
btn.toggled.connect(item.setHidden)
self.setItemWidget(item, CustomWidget(item, self))
btn.click()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setStyle('Fusion')
# Изменить высоту кнопки на qss
app.setStyleSheet('#testBtn{min-height: 40px;}')
w = Window()
w.resize(300, 300)
w.show()
sys.exit(app.exec_())

