2017-02-21 28 views
-1

С помощью следующего кода я произвожу окно с кнопками:Удалить пространство между QWidgets

#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

Можно ли уменьшить расстояние между кнопками?

ответ

1

Вы можете попробовать использовать setSpacing метод:

vLayout.setSpacing(0); 

Но я думаю, что реальная проблема здесь будет то, что ваш макет растягивается, чтобы покрыть весь виджет и упорядочивает элементы макета соответственно.

Другая вещь, которую вы можете попробовать это установить поле:

vLayout.setMargin(0); 
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