1

したがって、QGraphicsPolygonItemを含むQraphicsSceneがあり、これを移動可能としてフラグを立てます。また、MousePressEventをオーバーライドします。私のコードスニペットは今tllです。

def mousePressEvent(self , e):
    self.endx = e.x()
    self.endy = e.y()
    if self.sender == 1:
        self.LineChange(self.endx , self.endy)

#...

def CreateFun(self):
    poly = QtGui.QPolygonF([QtCore.QPointF(100 , 100) , QtCore.QPointF(100 , 200) , QtCore.QPointF(200 , 200)])
    self.polygon = QtGui.QGraphicsPolygonItem(poly)
    self.scene.addItem(self.polygon)
    self.polygon.setFlag(QtGui.QGraphicsItem.ItemIsMovable)

ただし、ポリゴンは移動していません。そして、MousePressEventをコメントアウトすると、うまく動きます。私の推測では、MousePressEventは、PolygonItemがキャッチする前にキャッチします。

上記の関数は、QtGui.QGraphicsViewから継承されたクラスからのものです。助言がありますか?

4

1 に答える 1

1

の基本実装を呼び出す必要がありますmousePressEventQGraphicsView通常、これらのクリックは、それらを使用する可能性のある他のアイテムに渡されます。基本実装を呼び出さない場合は、基本的にクリックを「トラップ」しています。

mousePressEvent次のように変更します。

def mousePressEvent(self , e):
    self.endx = e.x()
    self.endy = e.y()
    if self.sender == 1:
        self.LineChange(self.endx , self.endy)
    # let the base implementation do its thing
    super(Palette, self).mousePressEvent(e)
于 2013-01-22T19:42:36.533 に答える