我正在尝试开发一个包含 QTextEdit 小部件的 GUI。当 gui 加载时,它会从文件中提取数据,其中数据位于固定宽度的列中。
我希望用户能够单击 QTextEdit 小部件中的各个点,以标记新列开始的位置,并且我希望在这些位置的小部件上绘制垂直线以显示列。
在我的 GUI init () 方法中,我有以下行来拦截来自文本小部件的paintEvent:
self.mytextviewer.paintEvent = self.handlePaintEvent
我有一个 handlePaintEvent() 方法:
def handlePaintEvent(self, event):
painter = QPainter(self.mytextviewer)
pen = QPen(Qt.SolidLine)
pen.setColor(Qt.black)
pen.setWidth(1)
painter.setPen(pen)
painter.drawLine(20, 0, 20, 100)
但是,当我尝试运行代码时,我开始收到有关画家未处于活动状态的 QPainter 错误。
然后我尝试了一个不同的方向,将 QTextEdit 子类化并将与上面基本相同的代码添加到我的子类的 paintEvent() 方法中。但是我仍然收到错误。
然后我尝试将painter.begin(self)
and添加painter.end()
到 paintEvent() 方法中,但也对此不满意。
此外,由于我添加了自定义paintEvent() 方法,因此不再显示最初显示在小部件中的文本。
我在这里做了什么非常愚蠢的事情,还是有更好/更简单的方法来解决这个问题?
谢谢。