我已经按顺序将一个包含小句子的QLabel、一个QLineEdit和一个QPushButton插入到QVBoxLayout中。我的主窗口占用户桌面的70%。
我的问题是,我的标签扩展到父窗口高度的近80%,而QLineEdit和` `QButton\被挤压在底部。
我想出了一个方法来解决这个问题:我插入了更多没有内容的标签,但这不是最好的解决方案。我能做什么?
我也尝试过QFormLayout,但它不符合我的需求。我喜欢小部件按垂直顺序排列。我用QSizePolicy尝试了很多方法,但都不起作用。
发布于 2013-05-01 16:07:09
我想你要找的是添加一个间隔物品。在将所有小部件添加到布局中之后,尝试在布局中使用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);
}
};渲染:

(左侧无拉伸,右侧拉伸。)
https://stackoverflow.com/questions/16314580
复制相似问题