Qt:制作布局的 children invisible/visible

Qt: making a layout's children invisible/visible

我有一个 QHBoxLayout,我想让它的 children 不可见,然后再显示。我已经尝试了 QWidget::findChildren()QObject::children()QLayout::widget() 的各种组合,但是 none 这些都有效。前 2 return 个空列表,第二个 return 是 NULL。

小部件不是布局的子项:QWidget 只能是 QWidget 的子项,并且 QLayout 不是小部件。您必须改为递归枚举布局的元素。回想一下 QLayout is-a 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);
};