QVBoxLayout如何添加间隔行

时间:2019-05-27 14:44:27

标签: c++ qt

是否可以在QVBoxLayout中添加空格行?我尝试使用QPushButton,然后隐藏,但这不起作用。

我希望布局包含5个按钮,并在按钮4和5之间留有一个间隔行。

2 个答案:

答案 0 :(得分:1)

您不需要自己处理QSpacerItemdocumentation列出了创建QSpacerItem时应使用的方法)。

如果要添加特定大小的空格,可以使用QVBoxLayout::addSpacing()

    QWidget* w = new QWidget();
    QVBoxLayout* layout = new QVBoxLayout(w);
    layout->addWidget(new QPushButton("first"));
    layout->addWidget(new QPushButton("second"));
    layout->addWidget(new QPushButton("third"));
    layout->addWidget(new QPushButton("fourth"));
    layout->addSpacing(50);
    layout->addWidget(new QPushButton("fifth"));
    w->show();

第四第五之间的最小间隔为50个像素:

enter image description here enter image description here

如果要将按钮 fifth 放在底部,而将其他按钮放在顶部,请使用QVBoxLayout::addStretch()

    QWidget* w = new QWidget();
    QVBoxLayout* layout = new QVBoxLayout(w);
    layout->addWidget(new QPushButton("first"));
    layout->addWidget(new QPushButton("second"));
    layout->addWidget(new QPushButton("third"));
    layout->addWidget(new QPushButton("fourth"));
    layout->addStretch(1);
    layout->addWidget(new QPushButton("fifth"));
    w->show();

enter image description here enter image description here

答案 1 :(得分:0)

尝试添加QSpacerItem

QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(new QPushButton("first"));
layout->addWidget(new QPushButton("second"));
layout->addWidget(new QPushButton("third"));
layout->addWidget(new QPushButton("fourth"));
layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding));
layout->addWidget(new QPushButton("fifth"));