Qt:让布局的孩子看不见/可见

时间:2018-03-16 18:52:24

标签: qt user-interface qt4 show-hide

我有一个QHBoxLayout,我想让它的孩子看不见,然后再看见。我已经尝试了QWidget::findChildren()QObject::children()QLayout::widget()的各种组合,但这些都不起作用。前2个返回空列表,第2个返回NULL。

1 个答案:

答案 0 :(得分:1)

小部件不是布局的子级:QWidget只能是QWidget的子级,而QLayout不是小部件。您必须以递归方式枚举布局的元素。回想一下QLayout是一个QLayoutItem

void setLayoutVisible(QLayoutItem *item, bool visible) {
  if (auto widget = item->widget())
    return widget->setVisible(visible);
  if (auto layout = item->layout())
    for (int i = 0; i < layout->count(); ++i)
      setLayoutVisible(layout->itemAt(i), visible);
};