0

我有这个代码:

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() 经常被调用。

4

1 回答 1

4

您必须在每个 上重新绘制小部件内容paintEvent,没有其他办法。

也许在您的情况下,最好在其他绘画设备(QImage, QPixmap, QPicture, ...)上绘画,然后在每个绘画事件上绘画。

于 2012-05-06T17:47:47.410 回答