QGridLayout eliminar espacios
Pregunta
tengo un QTableWidget
y 6 QPushBotton
quiero ponerlos en un diseño de esta manera
solo un pequeño espacio entre botones
Pero usando QGridLayout
haz que se vea así
Código:
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)
Probé el setRowStretch(i, 0), setVerticalSpacing(0)
¡pero no ayudó!
yo también usé QGridLayout
y QVBoxLayout
para el grupo de botones, funciona pero todos los botones están alineados en la parte inferior, aunque usé AlignTop
para cada elemento y para el Layout
Solución
Sólo necesitas agregar un Espaciador en su diseño:
El QSpacerItem La clase proporciona espacios en blanco en un diseño.
verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
Cualquier espacio adicional en el diseño será "absorbido" por el espaciador, que mantendrá alineados los demás widgets.
Otros consejos
Agregue una Qlabel ("") debajo del botón Eliminar.Esto los hace como quieres.