Qt 在布局上动态创建项目,单击QSpin时-删除不会删除项目

Qt 在布局上动态创建项目,单击QSpin时-删除不会删除项目,qt,layout,Qt,Layout,我想在布局上动态创建X标签。X是从QSpinBox中获取的 当X减少时,我需要首先删除布局上的项目,然后创建一个新项目,减少标签数量: void dial::quantity1SpinClicked(int val) { QLayout *layout = fqbox->layout(); if(layout != 0) { QLayoutItem *item; while ((item = layout->takeAt(0))

我想在布局上动态创建X标签。X是从QSpinBox中获取的

当X减少时,我需要首先删除布局上的项目,然后创建一个新项目,减少标签数量:

void dial::quantity1SpinClicked(int val)
{
    QLayout *layout = fqbox->layout();
    if(layout != 0)
    {
        QLayoutItem *item;
        while ((item = layout->takeAt(0)) != 0)
            layout->removeItem (item);
        delete layout;
    }

    QGridLayout *gridLayout = new QGridLayout;

    QList<QLabel*> labels;

    for (int i = 0; i < val; ++i){
        labels << new QLabel(QObject::tr("nr %1").arg(i));
        gridLayout->addWidget(labels.at(i), i, 0);
    }

    fqbox->setLayout(gridLayout);
}
void dial::quantity1SpinClicked(int-val)
{
QLayout*layout=fqbox->layout();
如果(布局!=0)
{
QLayoutItem*项目;
而((项目=布局->接受(0))!=0)
布局->移除项目(项目);
删除布局;
}
QGridLayout*gridLayout=新的QGridLayout;
QList标签;
对于(int i=0;isetLayout(网格布局);
}
但是,我的代码不会删除项目,它会在旧布局的基础上创建一个新布局(看起来是这样的):


如何解决这个问题

需要删除
QLabel
小部件:

    QLayoutItem *item;
    while ((item = layout->takeAt(0)) != 0) {
        layout->removeItem (item);
        delete item->widget();
        delete item;
    }
另请注意以下说明:

调用者有责任删除该项目

请注意,项可以是布局(因为
QLayout
继承
QLayoutItem