2011-07-24 144 views
4

我已经做了大量的搜索这个问题,这可能是微不足道的。不过,我是pyQT的新手,我完全陷入困境。任何帮助,将不胜感激。pyQt4 QGraphicsView需要鼠标事件帮助

我只是想使用QGraphicsScene在QGraphicsView小部件上放置,移动和绘制对象。 以下处理鼠标按下事件的代码有效,但当鼠标在窗体中的任何位置单击时(而不仅仅是在QGraphicViewer中)(也因为此对象随后放置在错误的位置)而触发。 下面是从代码中的提取物我现在使用

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) 

我知道我应该使用QGraphicsSceneMouseEvent,我可以看到这是如何用C++实现;但我不知道如何让它在Python中工作。

由于

回答

5

尝试延伸QtGui.QGraphicsScene和使用其mousePressEvent和从scenePos坐标()。就像:

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