QGridLayout 删除间距

Ben*_*hak 2 qt pyqt pyside qt5

我有一个QTableWidget和 6QPushBotton我想以这种方式将它们放在布局中

在此处输入图片说明

按钮之间只有很小的间距

但是使用QGridLayout使它看起来像这样

在此处输入图片说明

代码:

    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)
Run Code Online (Sandbox Code Playgroud)

我试过了,setRowStretch(i, 0), setVerticalSpacing(0)但没有帮助!

我也用QGridLayout,并QVBoxLayout为Bottons集团,它的工作原理,但所有按钮都在底部对齐,虽然我用AlignTop的每个元素和布局

Tay*_*510 5

你只需要在你的布局中添加一个Spacer

在此处输入图片说明

QSpacerItem类提供了一个布局空白。

verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
Run Code Online (Sandbox Code Playgroud)

布局中的任何额外空间都将被间隔器“吸收”,这将使其他小部件保持对齐。