Qt findChildren 仅查找Layout下的控件

Qt findChildren 仅查找Layout下的控件

通过在findChildren下添加Layout的判断实现效果

在这里插入图片描述

使用示例

		foreach(QAbstractButton* btn, this->findChildren<QAbstractButton*>())
		{
			if(isChildWidgetOfAnyLayout(ui.gridLayout, btn))
				btn->setEnabled(true);
		}

源码

//************************************
// 名    称	: isChildWidgetOfAnyLayout
// 创建日期	:2023/01/30
// 参    数	: QLayout * layout	
// 参    数	: QWidget * widget
// 返 回 值	:bool
// 备    注	:判断widget是否为widget的子对象(递归)
//************************************
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值