2016-09-29 14 views
-1

Ich möchte ein Child-Container-Layout erstellen, das 2 Widgets enthält. Diese zwei Widgets sollten direkt nebeneinander platziert werden, aber mein derzeitiges Setup hat immer noch einige Abstände dazwischen.Wie entferne ich den Abstand innerhalb eines GridLayout (QT)?

Ich habe den Abstand bereits auf 0 setSpacing(0) eingestellt. Und setContentsMargins(0,0,0,0) hilft nicht.

Ich verwende PyQt5, aber es sollte kein Problem sein, C++ - Code zu konvertieren.

Wie man auf dem Bild sehen kann, gibt es noch eine kleine Lücke:

(links: LineEdit - Recht: Pushbutton)

import PyQt5.QtCore as qc 
import PyQt5.QtGui as qg 
import PyQt5.QtWidgets as qw 

import sys 

class Window(qw.QWidget): 
    def __init__(self): 
     qw.QWidget.__init__(self) 

     self.initUI() 

    def initUI(self): 
     gridLayout = qw.QGridLayout() 

     height = 20 

     self.label1 = qw.QLabel("Input:") 
     self.label1.setFixedHeight(height) 
     gridLayout.addWidget(self.label1, 0, 0) 

     # Child Container 
     childGridLayout = qw.QGridLayout() 
     childGridLayout.setContentsMargins(0,0,0,0) 
     childGridLayout.setHorizontalSpacing(0) 

     self.lineEdit1 = qw.QLineEdit() 
     self.lineEdit1.setFixedSize(25, height) 
     childGridLayout.addWidget(self.lineEdit1, 0, 0) 

     self.pushButton1 = qw.QPushButton("T") 
     self.pushButton1.setFixedSize(20, height) 
     childGridLayout.addWidget(self.pushButton1, 0, 1) 
     # ----------------- 
     gridLayout.addItem(childGridLayout, 0,1) 

     self.setLayout(gridLayout) 


if __name__ == '__main__': 

    app = qw.QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 
+0

Sie sollen Ihren Code schreiben und ein minimales nachprüfbares Beispiel bieten: http://stackoverflow.com/help/mcve –

+0

Okay, danke, ich habe einen Beispiel-Code hinzugefügt. – Sens4

Antwort

0

Die QT-Dokumentation sagt: standardmäßig QLayout verwendet die vom Stil bereitgestellten Werte. Auf den meisten Plattformen beträgt der Abstand 11 Pixel in alle Richtungen.

Ref: http://doc.qt.io/qt-4.8/qlayout.html#setContentsMargins

So müssen Sie möglicherweise "setHorizontalSpacing (int Abstand)" verwenden, für den horizontalen Raum und "setVerticalSpacing (int Abstand)" für die vertikale.

Basierend auf der Dokumentation kann dies Speicherplatz in Ihrem Fall löschen. Ref: http://doc.qt.io/qt-4.8/qgridlayout.html#horizontalSpacing-prop

Wenn nicht behoben ist, gibt es eine Option Stileinstellungen für Raum außer Kraft zu setzen (von wo aus das Layout wird) .... Ich denke, das ist langweilig

Wenn Sie benutzerdefinierte Layout Abstände zur Verfügung stellen möchten Implementieren Sie in einer QStyle-Unterklasse einen Slot namens layoutSpacingImplementation() in Ihrer Unterklasse.

Mehr detials: http://doc.qt.io/qt-4.8/qstyle.html#layoutSpacingImplementation

Verwandte Themen