2017-02-21 15 views
-1

Mit folgendem Code generieren ich ein Fenster mit Schaltflächen:Entfernen Raum zwischen 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

Mit layout.setContentsMargins(0,0,0,0) kann ich gehen zu:

enter image description here

Ist es möglich, noch mehr Platz zwischen den Tasten reduzieren?

Antwort

1

können Sie versuchen, setSpacing Methode:

vLayout.setSpacing(0); 

Aber ich denke, das eigentliche Problem hier wäre, dass Ihr Layout ganze Widget zur Deckung ausgestreckt wird, und es ordnet entsprechend Layout-Elemente.

Eine andere Sache, die Sie versuchen können, ist die Marge setzen:

vLayout.setMargin(0); 
0

Sie den Raum entfernen kann, durch Einstellen des Abstands:

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

es 0 Einstellung sollten Sie die Widgets bringen zusammen.

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(); 
} 

In Ihrem Beispiel oben sollten Sie wahrscheinlich auch einen Strech Abschnitt hinzufügen:

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