删除QWidgets之间的空间

时间:2017-02-21 15:53:29

标签: c++ qt qt5

使用以下代码生成一个带按钮的窗口:

#include <QApplication>
#include <QtWidgets>

class Item : public QWidget {
    QHBoxLayout hLayout{this};
    QPushButton bt{"button"};
public:
    Item() : QWidget() {
        hLayout.addWidget(&bt);
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget w;
    QVBoxLayout vLayout(&w);
    vLayout.addWidget(new Item());
    vLayout.addWidget(new Item());
    vLayout.addWidget(new Item());
    vLayout.addWidget(new Item());
    vLayout.addWidget(new Item());
    w.show();
    return app.exec();
}

enter image description here

layout.setContentsMargins(0,0,0,0)我可以去:

enter image description here

是否可以减少按钮之间的空间?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用setSpacing方法:

vLayout.setSpacing(0);

但我认为这里真正的问题是你的布局扩展到覆盖整个小部件,并相应地安排布局项目。

您可以尝试的另一件事是设置保证金:

vLayout.setMargin(0);

答案 1 :(得分:0)

您可以通过调整间距来删除空格:

http://doc.qt.io/qt-5/qlayout.html#spacing-prop

将其设置为0应该将小部件组合在一起。

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget w;
    QVBoxLayout vLayout(&w);
    vLayout.addWidget(new Item());
    ...

    // Removes outer margins
    vLayout.setContentsMargins(0,0,0,0);

    // Set space between items to '0'
    vLayout.setSpacing(0);

    w.show();
    return app.exec();
}

在上面的示例中,您可能还应添加strech部分:

http://doc.qt.io/qt-5/qboxlayout.html#addStretch