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

abb*_*bby 8 c++ layout qt widget

我有一个水平布局,我正在使用添加小部件

ui->horizontalLayout->addWidget(label);
Run Code Online (Sandbox Code Playgroud)

但添加策略并不是我想要的.例如,当我添加项目时,它首先放置开始,然后放在最后并继续放置.

添加3个小部件

继续添加

但是,我想要的是,当我将小部件添加到布局时,它应该放在上一个小部件旁边.像那样 , 我想要的是

有可能这样做吗?

Lee*_*ite 9

添加完所有小部件后,向其添加一个担架.

ui->horizontalLayout->addStretch();
Run Code Online (Sandbox Code Playgroud)

会做.


thu*_*uga 7

您可以在水平布局的外侧或水平布局内添加间隔项.如果在水平布局中添加spacer项,则必须确保在spacer项之前添加标签小部件.在这种情况下,使用insertWidget()函数添加标签.

或者,您可以在添加标签小部件后将spaceritem添加到水平布局的末尾.

这是一个例子:

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);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

setAlignment(Qt::AlignLeft);应该做的伎俩。您也可以将其用于:
setSpacing(0);setContentsMargins(0, 0, 0, 0);
删除小部件之间的额外空间。