Qt:使布局的子项不可见/可见



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

小部件不是布局的子项: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);
};

最新更新