Qt findChildren 仅查找Layout下的控件
通过在findChildren下添加Layout的判断实现效果

使用示例
foreach(QAbstractButton* btn, this->findChildren<QAbstractButton*>())
{
if(isChildWidgetOfAnyLayout(ui.gridLayout, btn))
btn->setEnabled(true);
}
源码
bool isChildWidgetOfAnyLayout(QLayout *layout, QWidget *widget)
{
if (layout == nullptr || widget == nullptr)
return false;
if (layout->indexOf(widget) >= 0)
return true;
foreach(QObject *o, layout->children())
{
if (isChildWidgetOfAnyLayout((QLayout*)o, widget))
return true;
}
return false;
}