【问题标题】:pyQt4 QGraphicsView on mouse event help neededpyQt4 QGraphicsView 需要鼠标事件帮助
【发布时间】:2011-07-24 11:26:51
【问题描述】:

我已经为这个问题做了大量的搜索,这可能是微不足道的。但是我是 pyQT 的新手并且完全被卡住了。任何帮助将不胜感激。

我只想使用 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 中工作。

谢谢

【问题讨论】:

    标签: python qt pyqt


    【解决方案1】:

    尝试扩展 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2018-10-09
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多