2010-06-07 5 views
0

Fragment de code du programme:QPainter peint ordures

def add_link(Item0Num, Item1Num): 
    global Mw, View # Mw - MainWindow 
    if Item0Num != Item1Num and not link_exists(Item0Num, Item1Num): 
     append(links_to(Item1Num), Item0Num) 
     append(links_from(Item0Num), Item1Num) 
     LinkGi = TLinkGi() 
     Mw.Scene.addItem(LinkGi) 
     LinkGi.setZValue(200) 
     LinkGi.scale(1/View.Scale, 1/View.Scale) 
     LinkGi.Item0Num = Item0Num 
     LinkGi.Item1Num = Item1Num 

class TLinkGi(QGraphicsItem): 

    def paint(self, Painter, StyleOptionGraphicsItem, Widget): 
     global Mw, View 
     Pen = QPen(Qt.black, 1) 
     Painter.setPen(Pen) 
     X0, Y0 = task_center(self.Item0Num) 
     self.setPos(X0, Y0) 
     X1, Y1 = task_center(self.Item1Num) 
     X, Y = int((X1 - X0) * View.Scale), int((Y1 - Y0) * View.Scale) 
     Painter.drawLine(0, 0, X, Y) 
     #Mw.Scene.update(0, 0, Plan.Size, Plan.Size) # (1) 
     #Mw.gvMain.repaint()       # (2) 

    def boundingRect(self): 
     global View 
     Rect = QRectF(0, 0, Plan.Size, Plan.Size) 
     return Rect 

Ce peint comme déchets: http://img697.imageshack.us/img697/5395/qpaintergarbage1.jpg 1 http://img697.imageshack.us/img697/5395/qpaintergarbage1.jpg

Lorsque les lignes (1) et (2) sont des choses décommente ne devient pas beaucoup mieux: http://img63.imageshack.us/img63/9693/qpaintergarbage0.jpg 2 http://img63.imageshack.us/img63/9693/qpaintergarbage0.jpg

S'il vous plaît aidez-moi à résoudre ce problème.

Répondre

2

Cela peut arriver parce que vous ne désactivez pas l'arrière-plan avant de peindre. Ou vous l'effacez manuellement, mais pas toute la zone. Essayez setAutoFillBackground (true)