1.清除当前layout以及其中的控件
QLayoutItem * item;
if(ui->widget->layout()!=nullptr)
{
while((item=ui->widget->layout()->takeAt(0))!=nullptr)
{
delete item->widget();
delete item;
}
delete ui->widget->layout();
}
2.重新添加控件以及设置layout
auto *_FlowLayout = new QFlowLayout(NULL,5,10,10);
int count =rand()%10+1;
for(int i=0; i<count; i++)
{
auto checkBox = new QCheckBox();
checkBox->setText(QString("checkbox%1").arg(i+1));
m_CheckBox[i] = checkBox;//需要对checkbox进行操作,将其指针复制保存。
_FlowLayout->addWidget(m_CheckBox[i]);
}
if(ui->widget->layout()!=nullptr)
ui->widget->layout()->setParent(nullptr);
ui->widget->setLayout(_FlowLayout);