Проблемы переопределения paintEvent с PySide - PullRequest
3 голосов
/ 10 февраля 2012

Я переклассифицировал класс QPlainTextEdit и попытался переопределить функцию 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

Мое лучшее предположение - то, что функция не была переопределена должным образом, но я действительно не уверен.Кто-нибудь может сказать мне, где я иду не так?

1 Ответ

4 голосов
/ 27 февраля 2012

Вы должны передать окно просмотра в QPainter, так же как со списками и деревьями.

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