为什么每次使用QPainter都会清除小部件?

时间:2012-05-06 17:34:00

标签: python qt pyqt qpainter

我有这段代码:

def paintEvent(self, paintEvent):
    self._painter.begin(self)
    try:
        while True:
            color, rectangle = self._paint_queue.popleft()
            self._painter.fillRect(rectangle, color)
    except IndexError:
        pass
    finally:
        self._painter.end()

def drawInstruction(self, ptr, instruction):
    rectangle = QtCore.QRect(
             (ptr % self.cols)*CELL_SIZE,
             math.floor(ptr/float(self.cols))*CELL_SIZE,
             CELL_SIZE,
             CELL_SIZE)
    self._paint_queue.append((opcode2color[instruction.opcode],
        rectangle))
    self.update()

每次调用drawInstruction()时,已经绘制的所有内容都会被清除。只留下新的矩形。

每次调用drawInstruction()时重新绘制所有内容都不是解决方案,因为经常会调用drawInstruction()。

1 个答案:

答案 0 :(得分:4)

你必须在每个paintEvent上重新绘制小部件内容,没有别的办法。

也许在你的情况下,它可以更好地绘制在其他绘图设备上(QImageQPixmapQPicture,...),并在每个绘制事件上绘制它