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