【问题标题】:Problems overriding paintEvent with PySide使用 PySide 覆盖paintEvent 的问题
【发布时间】:2012-02-09 22:49:30
【问题描述】:

我已经继承了 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

我最好的猜测是该函数没有被正确覆盖,但我真的不确定。谁能告诉我哪里出错了?

【问题讨论】:

    标签: python overriding pyside paintevent


    【解决方案1】:

    您必须将视口传递给 QPainter,与列表和树一样。

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

    【讨论】:

    • 非常感谢,由于时间限制,我最终使用了一些技巧来解决它,但是对于未来的项目很高兴!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多