QT 动态删除布局以及所有控件

787 阅读1分钟
void Tools::cleanLayout(QLayout *layout)
{

    if( layout ==  nullptr){
        return;
    }
    QLayoutItem *child;
    while(child=layout->takeAt(0)) {
        if(child->widget()){
            child->widget()->setParent(nullptr);
        }
        layout->removeItem(child);
        delete child;
    }
    layout->update();//如果不加这一行界面会有撕裂
    delete layout;
}