PyQt メーリング リストの Benno Dielmann からの次の質問は、2008 年以来未回答のままです。
[..] QTableView セルの内容を描画するための paint() を実装する QStyledItemDelegate サブクラスがあります。これらのセルの 1 つにフォーカスがある場合、フォーカス四角形を描画するにはどうすればよいですか? 私はこれを試しました:
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()
しかし、これは単に何もしません。エラーもフォーカス フレームもありません。カスタムペイントされたセルの1つにフォーカスがある場合、QStyleシステムに通常のフォーカスフレームをペイントさせたいだけです。QStyle のドキュメントでは、QStyleOptionFocusRect を作成し、initFrom() を使用するように指示されています。しかし、initFrom() には、この場合にない QWidget が必要です。
私はそれを理解していません。
カスタム デリゲートによって描画された QTableView セルでフォーカス フレームを取得する通常の方法は何ですか?[..]