我有一个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);
};