我正在尝试创建一个表,其中每个项都包含一对行,如下所示:
理想情况下,顶行的字体会有所不同(而不仅仅是粗体)。
我的解决方案是继承QItemDelegate并重载paint
和sizeHint.
上图显示paint
正常工作,但我无法找出sizeHint
。这是我尝试过的(现在只做一行的元素):
def sizeHint(self, option, index):
index_data = index.data(Qt.SizeHintRole)
if index_data is None:
return QSize()
size = QItemDelegate.textRectangle(None,
textLayoutBounds(option),
option.font, str(index_data))
return size
不幸的是,使用PyQt,受保护的成员函数textRectangle
(由默认的sizeHint调用)是不可访问的。这样做的正确方法是什么?
答案 0 :(得分:0)
我的问题没有完整的解决方案。但是,对于计算文本矩形,您可以查看QFontMetrics.boundingRect。此外,您可能对this answer中提供的富文本项委托感兴趣。