PyQt 邮件列表中 Benno Dielmann 提出的以下问题自 2008 年以来一直没有得到答复:
[..] 我有一个 QStyledItemDelegate 子类,它实现了 paint() 来绘制一些 QTableView 单元格的内容。如果其中一个单元格有焦点,我如何让它绘制一个焦点矩形?我试过这个:
class MyDelegate(QStyledItemDelegate):
...
def paint(self, painter, option, index):
...
painter.save()
if option.state & QStyle.State_HasFocus:
self.parent().style().drawPrimitive(QStyle.PE_FrameFocusRect, option, painter)
...
painter.restore()
但这根本没有任何作用。没有错误,没有对焦框。如果我的一个自定义绘制单元格有焦点,我只希望 QStyle 系统以某种方式绘制通常的焦点框。QStyle 文档告诉我创建一个 QStyleOptionFocusRect 并使用 initFrom()。但是 initFrom() 需要一个 QWidget,在这种情况下我没有。
我只是不明白。
在自定义委托绘制的 QTableView 单元格中获取焦点帧的常用方法是什么? [..]