标签在QVBoxLayout中垂直展开

dad*_*od2 5 layout qt label

我已经按照这个顺序插入了QLabel一个小句子,a QLineEdit和QPushButtona QVBoxLayout.我的主窗口是用户桌面的70%.

我的问题是我的标签扩展到父窗口高度的近80%,QLineEdit并且`QButton \被挤压在底部.

我找到了解决这个问题的方法:我插入了更多没有内容的标签,但这不是一个很好的解决方案.我能做什么?

我也试过,QFormLayout但它不符合我的需要.我喜欢小部件是垂直的顺序.我试过很多方法,QSizePolicy但没有成功.

Mat*_*Mat 7

我认为你要找的是添加间隔项.addStretch在将所有小部件添加到布局后尝试使用布局.

例:

#include <QtGui>

class W: public QWidget
{
    Q_OBJECT

    public:
        W(bool spacer, QWidget *parent = 0)
            : QWidget(parent)
        {
            QLabel *l = new QLabel("Hello!");
            QLineEdit *e = new QLineEdit;
            QPushButton *p = new QPushButton("Go");

            QVBoxLayout *vl = new QVBoxLayout;
            vl->addWidget(l);
            vl->addWidget(e);
            vl->addWidget(p);

            if (spacer)
                vl->addStretch();

            setLayout(vl);

            resize(200, 400);
        }
};
Run Code Online (Sandbox Code Playgroud)

呈现:

在此输入图像描述

(左侧没有伸展,右侧伸展.)