簡體   English   中英

用PySide覆蓋paintEvent的問題

[英]Problems overriding paintEvent with PySide

我已經將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

我最好的猜測是該功能沒有被正確覆蓋,但我真的不確定。 誰能告訴我哪里出錯了?

您必須將視口傳遞給QPainter,與列表和樹一樣。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM