Qt 在布局上动态创建项目,单击QSpin时-删除不会删除项目
我想在布局上动态创建X标签。X是从QSpinBox中获取的 当X减少时,我需要首先删除布局上的项目,然后创建一个新项目,减少标签数量: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))
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
)