如何控制 QTableWidget 的外观 header

How to control appearance of QTableWidget header

如何更改QTableWidget header的字体及其内容边距和间距? 我想使 "Column 0"、"Column 1" 的字体更小,并且列名和 header 边缘之间没有间距。

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

columns = ['Column 0', 'Column 1', 'Column 2']
items = [['Row%s Col%s'%(row,col) for col in range(len(columns))] for row in range(100)]

view = QtGui.QTableWidget()
view.setColumnCount(len(columns))
view.setHorizontalHeaderLabels(columns)
view.setRowCount(len(items))   
for row, item in enumerate(items):
    for col, column_name in enumerate(item):
        item = QtGui.QTableWidgetItem("%s"%column_name)
        view.setItem(row, col, item)            
    view.setRowHeight(row, 16)

view.show()
app.exec_()

您可以通过以下方式更改字体大小:

item = QtGui.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(14)
item.setFont(font)

我不确定如何更改边距和间距。如果我发现了,我可以更新这个答案。 我建议使用QTDesigner来处理布局。

编辑: 在 QtDesigner 中,您可以使用以下选项更改水平和垂直 header 大小:horizo​​ntalHeaderDefaultSectionSize 和 verticalHeaderDefaultSectionSize 以及 header 字体,方法是双击它并在属性中选择您想要的字体。

我找不到消除边距的方法,但我可以建议一个临时解决方法。 您可以尝试 resizeColumnsToContents(),然后再用项目

填充 table

对于字体可以尝试做下

afont = PyQt4.QtGui.QFont()
afont.setFamily("Arial Black")
afont.setPointSize(11)
atable.horizontalHeaderItem(0).setFont(afont)

如果您想查看更多系列,可以随时查看 QtDesigner 中可用的系列。

表头项只不过是 QTableWidgetItems。所以你所要做的就是访问它们并将它们视为任何 QTableWidgetItem

答案和上一个几乎一样。