我已经按顺序将带有小句的QLabel
,QLineEdit
和QPushButton
插入到QVBoxLayout
中。我的主窗口是用户桌面的70%。
我的问题是我的标签扩展到父窗口高度的近80%,并且QLineEdit
和`QButton\被压缩在底部。
我想出了一种解决此问题的方法:我插入了更多没有内容的标签,但这不是黄金的解决方案。我能做什么?
我也尝试过QFormLayout
,但它不符合我的需求。我希望小部件是垂直排列的。我用QSizePolicy
尝试了很多方法,但是没有成功。
最佳答案
我认为您正在寻找的是添加一个隔离物。将所有小部件添加到布局后,尝试在布局上使用 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);
}
};
渲染:
(左侧不拉伸(stretch),右侧不拉伸(stretch)。)