使用:
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['Column 1','Column 2','Column 3'])
tree.setColumnWidth(0, 48)
tree.setColumnWidth(1, 48)
tree.setColumnWidth(2, 48)
QTreeWidget
已创建。它的列标题是名称。并设置标题水平尺寸。
现在我想自定义标题字体大小。
font = QtGui.QFont()
font.setPointSize(8)
tree.headerItem().setFont(0, font)
但是在这样的语法中使用.setFont
对标题中使用的字体大小没有任何明显的影响。
我也尝试过:
tree.headerItem().setFont(0, font)
tree.headerItem().setFont(1, font)
tree.headerItem().setFont(2, font)
没有成功。用什么方法来自定义QTreeWidget列标题中使用的字体大小?
示例1使列标题更大而不影响字体大小(?!):
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
font=QtGui.QFont()
font.setPointSize(24)
tree.header().setFont(font)
tree.show()
sys.exit(app.exec_())
示例2尝试再次使用QSS =对字体大小没有影响:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
tree.header().setStyleSheet('font: bold 24px; font-size: 32pt; font-family: Courier;')
tree.setStyleSheet('font: bold 24px; font-size: 32pt; font-family: Courier;')
tree.show()
sys.exit(app.exec_())
示例3使用setHeaderItem。没有成功:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
tree=QtGui.QTreeWidget()
font=QtGui.QFont()
font.setPointSize(36)
item=QtGui.QTreeWidgetItem()
item.setText(0,'Column name')
item.setFont(0,font)
tree.setHeaderItem(item)
tree.show()
sys.exit(app.exec_())
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
mainWindow=QtGui.QMainWindow()
mainWidget=QtGui.QWidget()
mainWindow.setCentralWidget(mainWidget)
mainLayout = QtGui.QVBoxLayout()
mainWidget.setLayout(mainLayout)
mainWindow.setStyleSheet('QWidget { font: bold italic large "Times New Roman" }')
tree=QtGui.QTreeWidget()
tree.setHeaderLabels(['One','Two','Tree','Four','Five'])
mainLayout.addWidget(tree)
mainWindow.show()
sys.exit(app.exec_())
我只是在另一台机器(OSX)上运行这些示例代码。令我惊讶的是代码正常工作,标题字体设置正确。有趣的是它在一台Mac上运行并且不能在另一台机器上工作的原因是什么?可能是sip
问题吗? Qt版本? PyQt版本?这是截图:
答案 0 :(得分:0)
假设您希望整个标题的字体相同,您应该能够:
tree.header().setFont(font)
答案 1 :(得分:0)
答案 2 :(得分:0)
QTreeWidget
列标题字体绝对是可调的。
对于那些从遥远的反乌托邦时代来到这里的人,最明智的方法是为与应用程序QHeaderView::section
小部件关联的样式表中的QMainWindow
选择器设置样式。这种方法可以将所有样式合理地集中到一个样式表中,并且可以在Qt(Creator | Designer)中即时预览这些样式。
具体来说,假设Qt(创建者|设计者):
QMainWindow
小部件。复制并粘贴以下QSS:
QTreeWidget QHeaderView::section {
font-size: 8pt;
}
单击确定。
Voilà! Qt样式表(QSS)异常强大。通常,它们只是以跨平台和前向兼容的方式完成给定美学任务的 方法。 ...实际上哪一种烂。
最后请注意,在这种情况下,上面的QTreeWidget
父选择器在技术上是可选的,但允许设置单个树部件而不是所有树部件(例如,{{1} },使用对象名QTreeWidget#muh_widget QHeaderView::section
)为单个树小部件的列标题设置样式。
很高兴,先生。另请参阅: