Удалить подслой в Qt? - PullRequest
       19

Удалить подслой в Qt?

3 голосов
/ 04 декабря 2009

В PyQt 4.5 у меня есть макет внутри другого макета. Я хотел бы удалить подслой от его родителя и скрыть его. Я могу сказать parent_layout.removeItem(child_layout), чтобы удалить макет из родительского элемента, но он все равно отображается в виджете. Я не могу найти способ скрыть это за один шаг, так как QLayout не имеет hide() метода, как QWidget.

Ответы [ 2 ]

4 голосов
/ 04 декабря 2009

Простым решением было бы иметь внутренний виджет, а не внутреннюю планировку. Вы можете назначить виджет, который вы хотите, виджету, а затем просто удалить / скрыть виджет, когда вы хотите это сделать. Хорошее эмпирическое правило: если вы просто хотите организовать внешний вид виджетов, используйте макет; если вы хотите скрыть / показать их как группу, используйте виджет.

1 голос
/ 04 декабря 2009

С некоторой помощью flupke на #qt я придумал:

for i in range(0, child_layout.count()):
  child_layout.itemAt(i).widget().hide()
parent_layout.removeItem(child_layout)

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

...