2012-05-06 83 views
0

我有這樣的代碼:爲什麼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()。

回答

4

您必須重新繪製每個paintEvent上的小部件內容,沒有其他方法。

也許在你的情況下,使用其他繪畫設備(QImage,QPixmap,QPicture,...),並在每個繪畫事件上繪製它會更好。

相關問題