在QItemDelegate子类上实现sizeHint

时间:2011-12-06 00:21:19

标签: python qt pyqt4

我正在尝试创建一个表,其中每个项都包含一对行,如下所示:

enter image description here

理想情况下,顶行的字体会有所不同(而不仅仅是粗体)。

我的解决方案是继承QItemDelegate并重载paintsizeHint.上图显示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 :(得分:0)

我的问题没有完整的解决方案。但是,对于计算文本矩形,您可以查看QFontMetrics.boundingRect。此外,您可能对this answer中提供的富文本项委托感兴趣。