Вопрос

В 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)

Который предполагает, что все дочерние элементы дочернего макета являются виджетами.Есть ли более простое решение?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top