我有一个 QGridLayout,我需要所有行中的间距,但不需要第一行中的间距。我怎样才能做到这一点?在下图中,您可以看到单元格之间的空间。我可以设置间距:
self.grid.setSpacing(0)
但这会影响整个网格。
最佳答案
通过删除水平间距并在标题标签上使用columnSpan,可以很容易地完成此操作。
这是一个简单的演示脚本:
from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
layout = QtGui.QGridLayout(self)
layout.setHorizontalSpacing(0)
self.setStyleSheet('background: black; color: white')
headers = 'Name: Item: Color: Status:'.split()
for column, header in enumerate(headers):
label = QtGui.QLabel(header)
label.setStyleSheet('background: silver; padding: 5px')
if column < len(headers) - 1:
layout.addWidget(label, 0, 2 * column, 1, 2)
layout.setColumnMinimumWidth(2 * column + 1, 10)
else:
layout.addWidget(label, 0, 2 * column)
widget = QtGui.QWidget()
widget.setStyleSheet('border: 1px solid white')
layout.addWidget(widget, 1, 2 * column)
layout.setRowStretch(1, 1)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 450, 90)
window.show()
sys.exit(app.exec_())
结果:
关于QT - QGridLayout 需要不同的标题行间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31150330/