QGroupbox中添加QVBoxLayout布局器,然后点击按钮,在槽函数中实现在QGroupbox中添加QCheckBox,然后再添加一个QSpacerItem,为的是让添加的多个QCheckBox集中在QGroupbox的顶部。问题是每次点击按钮都会添加QSpacerItem,打算每次点击按钮时候,在添加新的QCheckBox控件之前删除QSpacerItem,貌似没找到相应的删除QSpacerItem控件的函数。请问有什么解决方法可以实现多次点击按钮后添加的QCheckBox都集中在顶部?
不用spaceritem 用 label代替,完美解决问题
把QSpacerItem的指针保存下来,调用removeItem(QLayoutItem *Item)。
因为QSpacerItem继承至QLayoutItem。
代码如下:
{
QSpacerItem *spacer_item = new QSpacerItem;
QVBoxLayout *lay = new QVBoxLayout();
lay->addSpacerItem( spacer_item );
lay->removeItem( spacer_item );
}
你是不是想要QCheckBox全部在顶部依次排列,下面用空白填充的效果。试试下面的代码:
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(new QCheckBox); // 你的checkbox
layout->addStretch(0); //加弹簧
layout->setSpacing(0); // 设置间距
layout->setContentsMargins(0, 0, 0, 0);
}
{
layout->insertWidget(0, new QCheckBox); //动态在指定位置插入新的checkbox
}