(QT-UI)一、清除widget下的所有子控件

1、直接删除,释放widget和layout

QLayout* layout;

QLayoutItem *child;
//每次使用takeAt取了之后,原有的count就会减少,所以每次取下标为0的即可
while ((child = layout->takeAt(0)) != NULL) 
{
    if (child->widget()) 
    {
        child->widget()->setParent(NULL);
        delete child->widget();
    } 
    else if (child->layout()) 
    {
      layout->removeItem(child->layout());
    }
    delete child;
    child = NULL;
}
delete layout;

查了网上的函数用法,发现主要是获取layout下的控件数,并且将其删除,但是这个并没有有效解决清除Widget下的所有子控件的问题,在使用时,仍然发现更深层次的子控件没有删除,反而失去管理了。所以这个方法只适用于没有更深子控件的情况。

2、介绍一下ItemAt,takeAt,Count这三个函数

Count这个函数是返回layout下的本层次的控件数量,例如设置了一个两层的布局,外层的GridLayout计算count时,只会得出结果2,无论内层的HBoxLayout添加多少个,都和外层的无关。

QGridLayout* GLayout = new QGridLayout(this);
QHB
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值