C++ Qt从QHBoxLayout中删除拉伸

C++ Qt从QHBoxLayout中删除拉伸,c++,qt,C++,Qt,使用QBoxLayout::addStretch添加拉伸后,我是否可以以某种方式将其删除?我想在我添加的每个小部件之后继续在布局的末尾添加一个拉伸,因此我必须删除旧的拉伸,添加新的小部件,然后添加一个新的拉伸。您可以从一个只包含拉伸的布局开始,而不是在末尾删除和添加拉伸 然后,不添加新的小部件,而是将其插入位置layout->count()-1。拉伸将向右移动一个位置 因此: 您不能使用在-2处插入小部件吗?拉伸实际上是一个小部件吗?另外,它不应该是-1吗?delete verticalLayo

使用
QBoxLayout::addStretch
添加拉伸后,我是否可以以某种方式将其删除?我想在我添加的每个小部件之后继续在布局的末尾添加一个拉伸,因此我必须删除旧的拉伸,添加新的小部件,然后添加一个新的拉伸。

您可以从一个只包含拉伸的布局开始,而不是在末尾删除和添加拉伸

然后,不添加新的小部件,而是将其插入位置
layout->count()-1
。拉伸将向右移动一个位置

因此:


您不能使用在-2处插入小部件吗?拉伸实际上是一个小部件吗?另外,它不应该是-1吗?
delete verticalLayout->takeAt(verticalLayout->count()-1)@Miki ok它可以工作,但对于第一个元素,它添加了它和最右端,不知道为什么。首先,我只添加拉伸,然后在count()-1处添加第一个小部件,但它添加到了错误的位置。正确添加下一个小部件。“如果索引为负数,则在末尾添加小部件。”我首先错了,在索引计数处添加()-1,因为右侧的小部件将移动。对不起:D
QHBoxLayout* layout = new QHBoxLayout();
layout->addStretch();
setLayout(layout);

...

layout->insertWidget(layout->count()-1, yourWidget);