Pregunta

tengo un QTableWidget y 6 QPushBotton quiero ponerlos en un diseño de esta manera

enter image description here

solo un pequeño espacio entre botones

Pero usando QGridLayout haz que se vea así

enter image description here

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

¿Fue útil?

Solución

Sólo necesitas agregar un Espaciador en su diseño:

enter image description here

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top