QT-QGridLayout需要不同的标题行间距
我有一个QGridLayout,我需要所有行的间距,但不需要第一行的间距。我怎样才能做到这一点?在下图中,您可以看到单元格之间的空间。我可以通过以下方式设置间距:QT-QGridLayout需要不同的标题行间距,qt,pyqt,Qt,Pyqt,我有一个QGridLayout,我需要所有行的间距,但不需要第一行的间距。我怎样才能做到这一点?在下图中,您可以看到单元格之间的空间。我可以通过以下方式设置间距: self.grid.setSpacing(0) 但这将影响整个网格 Qt中没有魔法可以实现这一点。您将需要单独创建自己的标题,您可以通过在QWidget内创建水平布局来实现这一点。在gridlayout所在的widget的resizeEvent中,您需要根据gridlayout的每列中的widget的宽度,显式地更改标题布局中wid
self.grid.setSpacing(0)
但这将影响整个网格
Qt中没有魔法可以实现这一点。您将需要单独创建自己的标题,您可以通过在QWidget内创建水平布局来实现这一点。在gridlayout所在的widget的
resizeEvent
中,您需要根据gridlayout的每列中的widget的宽度,显式地更改标题布局中widget的宽度
如果您不想这样做,请考虑使用<代码> QTable WIDGET < /C> >,它包含一个内置的页眉
< P> >一个选项可以是,在<代码> QGRIDLays中的条目之间没有间隔(使用<代码>设置间距(0)< /代码>)。这实现了标题之间没有间距的目标 为了实现后续行中项目之间的间距,可以在每个项目周围引入另一个布局,在每一侧使用空格或空窗口小部件或者,您可以在网格布局中的当前项目之间插入列(同时仍具有
setspace(0)
set)。这些列的标题行中的项目可以设置样式,使其显示为当前标题项目的一部分。通过删除水平间距并在标题标签上使用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_())
从PyQt4导入QtCore,QtGui
类窗口(QtGui.QWidget):
定义初始化(自):
超级(窗口,自我)。\uuuu初始化
layout=QtGui.QGridLayout(self)
布局。设置水平间距(0)
self.setStyleSheet('背景:黑色;颜色:白色')
标题='名称:项:颜色:状态:'。拆分()
对于列,枚举中的标题(标题):
label=QtGui.QLabel(标题)
label.setStyleSheet('背景:银色;填充:5px')
如果列
结果:
请提供更多详细信息。你的问题不清楚。我做了一些编辑。是否更清楚?您不希望第一行中的单元格之间存在间距,而是希望后续行中的单元格之间存在间距?你说的是水平间距还是垂直间距(或者两者都有?)QTableWidget和QGridLayout之间的最大区别是什么?顾名思义,QTableWidget是一个小部件,这意味着它将提供更多的控制来处理大小、事件等。此外,你可以有效地处理QTableWidget中的项目,因为它们是
QTableWidgetItem
。这些项目还将提供一些方便的方法。您的情况更适合使用qtablewidget,这正是我等待的答案!如果您增加窗口的高度,标题也会被拉伸,我认为这不应该发生。这可能看起来像标题,但实际情况并非如此。@qurban。我做了一个小的调整来固定收割台的高度。但我的演示脚本只是为了回答OPs关于水平间距的特定问题(我认为它确实如此)。可能还有其他调整,但这似乎超出了原始问题的范围。当然,你的解决方案是解决OP问题的明智方法。但我只是想确定一点,即头部应该是固定高度的