我正在尝试创建一个带有分隔线的 TextEdit 小部件。首先,我创建了一个MyTextEdit
类(作为一个子类QTextEdit
)并覆盖其paintEvent()
method:
import sys
from PyQt4.QtGui import QApplication, QTextEdit, QPainter
class MyTextEdit(QTextEdit):
"""A TextEdit widget derived from QTextEdit and implementing its
own paintEvent"""
def paintEvent(self, event):
painter = QPainter(self)
painter.drawLine(0, 10, 10, 10)
QTextEdit.paintEvent(self, event)
app = QApplication(sys.argv)
textEdit = MyTextEdit()
textEdit.show()
sys.exit(app.exec_())
尝试执行这段代码,我得到lots出现以下错误:
QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::begin: Widget painting can only begin as a result of a paintEvent
...
我究竟做错了什么?
如果一个小部件有一个viewport,你必须将其传递给QPainter
构造函数:
painter = QPainter(self.viewport())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)