2011-07-24 9 views
4

私はこの問題をかなりの量検索しましたが、それはおそらく些細なことです。しかし、私はpyQTに新しいですし、完全に立ち往生しています。どんな助けもありがとう。pyQt4 QGraphicsView on mouseイベントのヘルプが必要です

QGraphicsSceneを使用してQGraphicsViewウィジェットにオブジェクトを配置、移動、描画するだけです。 マウスのプレスイベントを処理する次のコードは機能しますが、QGraphicViewerだけでなく、フォームのどこでもマウスがクリックされたときに発生します(この結果、オブジェクトが誤った場所に配置されることもあります)。ここ は、私は私がQGraphicsSceneMouseEventを使用する必要があります知っていると私は、これはC++で実装されているかを確認することができ、今

def mousePressEvent(self, ev): #QGraphicsSceneMouseEvent 
    if ev.button()==Qt.LeftButton: 
     item = QGraphicsTextItem("CLICK") 
     item.setPos(ev.x(), ev.y()) 
     #item.setPos(ev.scenePos()) 
     self.scene.addItem(item) 

を使用しているコードからの抜粋です。しかし、私はこれをPythonでどのように動作させるのか考えていません。

おかげ

答えて

5

)は(QtGui.QGraphicsSceneを拡張しscenePosからそのmousePressEvent座標を使用してみてください。何かのように:

class QScene(QtGui.QGraphicsScene): 
    def __init__(self, *args, **kwds): 
     QtGui.QGraphicsScene.__init__(self, *args, **kwds) 

    def mousePressEvent(self, ev): 
     if ev.button() == QtCore.Qt.LeftButton: 
      item = QtGui.QGraphicsTextItem("CLICK") 
      item.setPos(ev.scenePos()) 
      self.addItem(item) 
+0

ありがとうeryksun、これは動作します。 – arcane9