2016-12-18 15 views
0

私はQGraphicsItemを再実装しようとしていますが、アイテムをクリックすると、そのクラスで実行しようとするさらなる機能は、最初にクリックされたインスタンスにのみ影響します。私の質問は、どうやってこれを回避し、明示的にクリックされたインスタンスにのみ影響するのでしょうか?QGraphicsSceneでmousePressEventが期待通りに機能しない

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!?!? 

答えて

0

これは、元のクラスの関数を呼び出す代わりに、完全にそれを上書きすることで修正されました:次のように

私のクラスがあります。 mousePressEventで

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

    QGraphicsPolygonItem.mousePressEvent(self, e) 
関連する問題