Qt删除原布局后重新布局
直接上代码:
//重新布局
void mainwidget::reLayout()
{
//第一步:清空main主布局
QLayoutItem *child;
while ((child = mainLayout->takeAt(0)) != 0)
{
//删除Stretch(弹簧)等布局
if (child->spacerItem())
{
mainLayout->removeItem(child);
continue;
}
//删除子widget布局
mainLayout->removeWidget(child->widget());
child->widget()->setParent(0);
delete child;
}
//第二步:将原来的布局重新加入到主布局中
mainLayout->addWidget(initLayout());//如果还有其他布局,继续add
}
注意:
initLayout() 返回值为(QWidget *)—即mainLayout增加的布局都是QWidget形式。