Вопрос
В PyQt 4.5 у меня есть макет внутри другого макета.Я бы хотел удалить подслой из его родительского элемента и скрыть его.Я могу сказать parent_layout.removeItem(child_layout)
чтобы удалить макет из его родительского элемента, но он по-прежнему отображается в виджете.Я не могу найти никакого способа скрыть это за один шаг, так как QLayout
не имеет hide()
метод, подобный QWidget
делает.
Решение
Простым решением было бы иметь внутренний виджет, а не внутренний макет.Вы могли бы назначить виджету желаемый макет, а затем просто удалить / скрыть виджет, когда захотите это сделать.Хорошее эмпирическое правило заключается в том, что если вы просто хотите упорядочить отображение виджетов, то используйте макет;если вы хотите скрыть / показать их как группу, используйте виджет.
Другие советы
С некоторой помощью от flupke на #qt
, Я придумал:
for i in range(0, child_layout.count()):
child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)
Который предполагает, что все дочерние элементы дочернего макета являются виджетами.Есть ли более простое решение?