C++ QT-将小部件添加到水平布局

C++ QT-将小部件添加到水平布局,c++,qt,layout,widget,C++,Qt,Layout,Widget,我有一个水平布局,我使用 ui->horizontalLayout->addWidget(label); 但添加策略并不是我想要的。例如,当我添加项目时,它首先放在开始位置,然后放在结束位置,并从结束位置继续放 但是,我想要的是,当我将小部件添加到布局时,它应该放在前一个小部件的旁边。就这样,, 可以这样做吗?在添加所有小部件后,向其添加一个拉伸器 ui->horizontalLayout->addStretch(); 可以。您可以在水平布局的外部或内部添加一个

我有一个水平布局,我使用

ui->horizontalLayout->addWidget(label);
但添加策略并不是我想要的。例如,当我添加项目时,它首先放在开始位置,然后放在结束位置,并从结束位置继续放

但是,我想要的是,当我将小部件添加到布局时,它应该放在前一个小部件的旁边。就这样,,


可以这样做吗?

在添加所有小部件后,向其添加一个拉伸器

ui->horizontalLayout->addStretch();
可以。

您可以在水平布局的外部或内部添加一个。如果在水平布局中添加间隔项,则必须确保在间隔项之前添加标签小部件。在这种情况下,请使用该函数添加标签

或者,在添加标签小部件后,可以将间隔项添加到水平布局的末尾

以下是一个例子:

QHBoxLayout *hlayout = new QHBoxLayout;
ui->verticalLayout->addLayout(hlayout);
QSpacerItem *item = new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed);
hlayout->addSpacerItem(item);
for(int i = 0; i < 10; i++)
{
    QLabel *label = new QLabel("NOTE");
    hlayout->insertWidget(i, label);
}
QHBoxLayout*hlayout=新的QHBoxLayout;
用户界面->垂直布局->添加布局(hlayout);
QSpacerItem*item=新的QSpacerItem(1,1,QSizePolicy::Expanding,QSizePolicy::Fixed);
H布局->添加项目(项目);
对于(int i=0;i<10;i++)
{
QLabel*标签=新的QLabel(“注释”);
hlayout->insertWidget(i,标签);
}

setAlignment(Qt::AlignLeft)应该可以做到这一点。您还可以将其用于:
setspace(0);setContentsMargins(0,0,0,0)
以删除小部件之间的额外空间。

这对我来说很奇怪。你在添加小部件后添加了它,对吗?是的。for循环完成后(添加所有小部件后),我添加
ui->horizontalLayout->addStretch()
你有更具体的例子如何使用间隔项吗?@abby我修改了我的答案并添加了一个例子。它添加了我在问题中添加的第二张图片。但是我不想像第三张图片那样在音符之间留有任何空格。@abby,如果您使用正确的大小策略在正确的位置添加间隔项,就不应该出现这种情况。如果添加间隔项,会有什么不同吗?