QT - Adding widgets to horizontal layout

26,309

Solution 1

Add a stretcher to it after you have added all the widgets.

ui->horizontalLayout->addStretch();

will do.

Solution 2

You can add a spacer item, either on the outside of your horizontal layout, or inside your horizontal layout. If you add the spacer item inside the horizontal layout, you have to make sure you add your label widgets before the spacer item. Use the insertWidget() function to add your labels in this case.

Or you can add the spaceritem to the end of your horizontal layout after you've added your label widgets.

Here is an example:

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);
}

Solution 3

setAlignment(Qt::AlignLeft); should do the trick. Also you can use this with:
setSpacing(0);setContentsMargins(0, 0, 0, 0);
to remove extra space between widgets.

Share:
26,309
abby
Author by

abby

Updated on June 02, 2020

Comments

  • abby
    abby almost 4 years

    i have an horizontal layout and i am adding widgets by using

    ui->horizontalLayout->addWidget(label);
    

    But adding strategy is not what i want. For example, when i add items, it first puts the start, then puts at the end and keep putting from end.

    adding 3 widgets

    keep adding

    But, what i want is that, when i add widget to layout, it should be put next to the previous widget. like that , what i want

    is it possible to do that?

  • Lee White
    Lee White almost 11 years
    That seems very strange to me. You added it after adding the widgets, right?
  • abby
    abby almost 11 years
    yeap. after for loop is finished (after all widgets are added), i add the ui->horizontalLayout->addStretch();
  • abby
    abby almost 11 years
    Do you have more specific example how to use spacer item?
  • thuga
    thuga almost 11 years
    @abby I modified my answer and added an example.
  • abby
    abby almost 11 years
    it adds like the second picture i put in the question. But i want not to have any space between notes like third picture.
  • thuga
    thuga almost 11 years
    @abby That shouldn't happen if you add your spacer item in the correct place with the correct size policies. Does it make any difference if you add the spacer item?