QGridLayout supprimer l'espacement
Question
J'ai un QTableWidget
et 6 QPushBotton
je veux les mettre dans une mise en page de cette façon
juste un petit espacement entre les Boutons
Mais À L'Aide De QGridLayout
faire ça ressemble à ça
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)
J'ai essayé le setRowStretch(i, 0), setVerticalSpacing(0)
mais il n'a pas aidé!
J'ai aussi utilisé QGridLayout
et QVBoxLayout
pour les Boutons du Groupe, il fonctionne, mais tous les Boutons sont alignés au Fond, bien que j'ai utilisé AlignTop
pour chaque élément et pour la Mise en page
La solution
Vous avez juste besoin d'ajouter un Entretoise à votre disposition:
L' QSpacerItem la classe fournit de l'espace vide dans une mise en page.
verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
Tout espace supplémentaire dans la mise en page sera "absorbé" par l'entretoise, ce qui empêchera les autres widgets alignés.
Autres conseils
Ajouter un Qlabel("") ci-dessous bouton supprimer.Cela fait d'eux comme la façon dont vous le souhaitez.