在QItemDelegate子类中实现sizeHint
我正在尝试创建一个表格,每个项目包含一对行,像这样:
理想情况下,顶部行的字体应该和其他行不同(而不仅仅是加粗)。
我的解决方案是创建一个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调用)无法访问。那我该怎么做才对呢?
1 个回答
0
我没有你问题的完整答案。不过,如果你想计算文本的矩形区域,可以看看 QFontMetrics.boundingRect 这个链接。另外,你可能会对 这个回答 中提到的富文本项目代理感兴趣。