Вопрос

у меня есть QTableWidget и 6 QPushBotton я хочу расположить их таким образом

enter image description here

просто небольшое расстояние между кнопками

Но используя QGridLayout сделай это так

enter image description here

Код:

    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)

Я попробовал setRowStretch(i, 0), setVerticalSpacing(0) но это не помогло!

я также использовал QGridLayout и QVBoxLayout для группы «Боттоны» это работает, но все кнопки выровнены по нижнему краю, хотя я использовал AlignTop для каждого элемента и макета

Это было полезно?

Решение

Вам просто нужно добавить Проставка в вашем макете:

enter image description here

А QSpacerItem class предоставляет пустое пространство в макете.

verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)

Любое дополнительное пространство в макете будет «поглощено» разделителем, который сохранит выравнивание других виджетов.

Другие советы

Добавьте Qlabel("") под кнопкой удаления.Это делает их такими, какими вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top