Important: Please read the Qt Code of Conduct -

QLineEdit doesn't stretch to occupy full space in the layout

  • Hello,

    I have a an application which uses a QLineEdit in a QGridLayout to display/edit some text. The following piece of is what I use to construct and add the widget into the layout.

    // ...
    QLineEdit *edit = new QLineEdit;
    edit->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
    // ...
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(promptLabel, 0, 0, 1, 1, Qt::AlignLeft);
    layout->addWidget(new QLabel(""), 0, 1, 1, 1);
    layout->addWidget(edit, 0, 2, 1, 2, Qt::AlignLeft);
    layout->addWidget(new QLabel(""), 0, 4, 1, 1);
    layout->addWidget(selector, 0, 5, 1, 1, Qt::AlignLeft); 
    // ...

    This is how the output looks.

    I have set the horizontal stretch factor to 1 using the setHorizontalStretch function, but it didn't help. Note that this layout is part of another large layout with a few more widgets and my main widget's layout is governed via layouts (i.e., no fixed size provided).

    Any help would be much appreciated.

  • Hi, this is old now but in case someone else finds this:
    I managed to solve this problem by using
    for a layout holding the QLineEdit widget. Actually it wasn't the layout holding the widget, but the layout holding that layout, so you may need to experiment to find out where you need to make this update (or just use SetNoConstraint for all your layouts)
    I hope this helps someone!