QGridLayout entfernt Abstände
Frage
Ich habe ein QTableWidget
und 6 QPushBotton
Ich möchte sie auf diese Weise in ein Layout bringen
nur ein kleiner Abstand zwischen den Bottons
Aber mit QGridLayout
Lass es so aussehen
Code:
tab_Memory_layout = QtGui.QGridLayout()
tab_Memory_layout.setVerticalSpacing(0)
tab_Memory_layout.setAlignment(QtCore.Qt.AlignTop)
tab_Memory_layout.addWidget(self.MemoryTable, 0, 0)
tab_Memory_buttons = QtGui.QGridLayout()
tab_Memory_buttons.setSpacing(5)
tab_Memory_buttons.addWidget(self.pushButton_add_memory, 0, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_up_memory, 1, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_down_memory, 2, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_top_memory, 3, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_bottom_memory, 4, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_delete_memory, 5, 0, QtCore.Qt.AlignTop)
tab_Memory_layout.addLayout(tab_Memory_buttons, 0, 1)
self.tab_Memory.setLayout(tab_Memory_layout)
Ich habe es versucht setRowStretch(i, 0), setVerticalSpacing(0)
aber es hat nicht geholfen!
Ich habe auch verwendet QGridLayout
Und QVBoxLayout
Für die Bottons-Gruppe funktioniert es, aber alle Buttons sind unten ausgerichtet, obwohl ich es verwendet habe AlignTop
für jedes Element und für das Layout
Lösung
Sie müssen nur eine hinzufügen Abstandshalter in deinem Layout:
Der QSpacerItem Die Klasse stellt Leerraum in einem Layout bereit.
verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
Jeder zusätzliche Platz im Layout wird vom Abstandshalter „absorbiert“, wodurch andere Widgets ausgerichtet bleiben.
Andere Tipps
Fügen Sie unterhalb der Löschschaltfläche ein Qlabel("") hinzu.Dadurch werden sie genau so gestaltet, wie Sie es möchten.