2016-12-18 2 views
0

Ich habe an einer Neuimplementierung QGraphicsItem gearbeitet, aber wenn das Element angeklickt wird, wirken sich weitere Funktionen, die ich mit dieser Klasse ausführen möchte, nur auf die zuerst angeklickte Instanz aus. Meine Frage ist, wie kann ich das umgehen und nur die Instanz beeinflussen, auf die explizit geklickt wurde?mousePressEvent funktioniert nicht wie erwartet in QGraphicsScene

Meine Klasse ist wie folgt:

class PrefabPoly(QGraphicsPolygonItem): 

    def __init__(self, points, pen, brush, graphicsItem, parent=None): 
     super(PrefabPoly, self).__init__(QPolygon(points), graphicsItem, parent.scene) 
     self.setPen(pen) 
     self.setBrush(brush) 
     self.setCursor(Qt.PointingHandCursor) 
     self.parent = parent 

    def mousePressEvent(self, e): 
     print("press") 
     if isinstance(self.parent, CreatePrefabGridWidget): 
      self.setBrush(self.parent.cur_color) 
     #The brush is only changed for the item that was clicked first!?!? 

Antwort

0

Dies wird durch den Aufruf der ursprünglichen Klasse Funktion anstelle von total fixiert war zwingende es.

Im mouse:

def mousePressEvent(self, e): 
    print("press") 
    if isinstance(self.parent, CreatePrefabGridWidget): 
     self.setBrush(self.parent.cur_color) 

    QGraphicsPolygonItem.mousePressEvent(self, e) 
Verwandte Themen