2012-02-09 11 views
3

QPlainTextEditクラスをサブクラス化し、paintEvent関数をオーバーライドして行番号領域を描画できるようにしました。PySideでpaintEventをオーバーライドする問題

def paintEvent(self, e): 
    super(CodeEditor, self).paintEvent(e) 
    qp = QtGui.QPainter() 
    qp.begin(self) 
    self.drawLineNoArea(qp) 
    qp.end() 

プログラムは、私はこの出力を取得する実行します:

QPainter::begin: Widget painting can only begin as a result of a paintEvent 
QPainter::setPen: Painter not active 
QPainter::end: Painter not active, aborted 

は私の最高の推測では、機能が正常に上書きされていないことですが、私は本当にわかりません。誰が私が間違っているのか教えていただけますか?

答えて

4

リストやツリーと同じように、ビューポートをQPainterに渡す必要があります。

def paintEvent(self, e): 
    super(CodeEditor, self).paintEvent(e) 
    qp = QtGui.QPainter() 
    qp.begin(self.viewport()) 
    self.drawLineNoArea(qp) 
    qp.end() 
+0

ありがとうございました。私は時間の制約のために少しでもハックしてしまいましたが、今後のプロジェクトでは知っておいてよかったです! – Lolecule

関連する問題