Qgridlayout rimuovi spaziatura
Domanda
Ho un QTableWidget
e 6 QPushBotton
che voglio metterli in un layout in questo modo
Solo una piccola spaziatura tra i bottoni
Ma usare QGridLayout
Realizza che assomigli a questo
Codice:
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)
.
Ho provato il setRowStretch(i, 0), setVerticalSpacing(0)
ma non ha aiutato!
Ho anche usato QGridLayout
e QVBoxLayout
per il gruppo Bottons, funziona, ma tutti i pulsanti sono allineati in basso, anche se ho usato AlignTop
per ciascun elemento e per il layout
Soluzione
Hai solo bisogno di aggiungere un distanziatore Nel tuo layout:
La classe QSpaceritem offre spazio vuoto in un layout.
verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
.
Qualsiasi spazio extra nel layout sarà "assorbito" dal distanziatore, che manterrà altri widget allineati.
Altri suggerimenti
Aggiungi un Qlabel ("") sotto il tasto Elimina.Questo li rende come il modo in cui vuoi.