QGridLayout删除间距

时间:2014-06-03 00:25:29

标签: qt pyqt qt5 pyside

我有QTableWidget和6 QPushBotton我希望以这种方式将它们放在布局中

enter image description here

Bottons之间的间距很小

但是使用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),但它没有帮助!

我还使用QGridLayoutQVBoxLayout作为Bottons Group,它可以工作,但所有按钮都在底部对齐,尽管我为每个元素和布局使用了AlignTop

2 个答案:

答案 0 :(得分:4)

您只需在布局中添加 Spacer

enter image description here

QSpacerItem 类在布局中提供空白。

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

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

答案 1 :(得分:1)

在删除按钮下方添加Qlabel(“”)。这使它们像你想要的那样。