5

我已按此顺序将QLabel带有小句子 aQLineEdit和 a 的 a插入到 a中。我的主窗口是用户桌面的 70%。QPushButtonQVBoxLayout

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

我想出了解决这个问题的方法:我插入了更多没有内容的标签,但这不是黄金解决方案。我能做些什么?

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

4

1 回答 1

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

渲染:

在此处输入图像描述

(左侧不拉伸,右侧拉伸。)

于 2013-05-01T08:07:08.853 回答