如何在QGraphicsView中获取鼠标释放坐标
How to get mouse release coordinates in QGraphicsView
大家好,我是 Qt 和 pyside 的新手。我试图在 QGraphicsView 实例中获取鼠标的坐标。我试图重新实现我的 mouseReleaseEvent 但想知道我将如何实际使用这个重新实现的函数。
在主窗口中class:
self.tScn = QtGui.QGraphicsScene()
self.graphicsView_2 = QtGui.QGraphicsView(self.centralwidget, self.tScn)
在 MainConsumer class(派生自 MainWindow:
def pointSelection(self):
pos = self.tScn.mouseReleaseEvent(QMouseEvent)
print(pos)
def mouseReleaseEvent(self, QMouseEvent):
pos = QMouseEvent.lastScenePos()
print(pos)
return pos
python 给我这个警告:
AttributeError: 'PySide.QtGui.QMouseEvent' object has no attribute 'lastScenePos
'
我尝试了几种不同的顺序和结构,但没有任何效果,现在我对 PySide.QtGui.QGraphicsScene.mouseReleaseEvent(event)
、PySide.QtGui.QGraphicsSceneMouseEvent.lastScenePos()
、class PySide.QtGui.QGraphicsSceneMouseEvent([type=None])
和 QtCore.QEvent.GraphicsSceneMouseRelease
之间的关系感到非常困惑有人帮帮我吗?
谢谢!
创建一个 class 继承自 QGraphicsScene 并具有这样的信号
class MyGraphicsScene(QtGui.QGraphicsScene):
signalMousePos = QtCore.pyqtSignal(QtCore.QPointF)
def __init__(self, parent):
super(MyGraphicsScene, self).__init__(parent)
然后覆盖这个新 class
中的 mouseRelease 事件
def mouseReleaseEvent(QGraphicsSceneMouseEvent):
pos = QGrapihcsSceneMouseEvent.lastScenePos()
self.signalMousePos.emit(pos)
然后在您的 MainConsumer class 中替换
self.tScn = QtGui.QGraphicsScene()
和
self.tScn = MyQGraphicsScene()
self.tScn.signalMousePos.connect(self.pointSelection)
pointSelection 变为
def pointSelection(self, pos)
#Whatever you want to do with the position coordinates
并且不再需要 MainConsumer 中的 mouseReleaseEvent
大家好,我是 Qt 和 pyside 的新手。我试图在 QGraphicsView 实例中获取鼠标的坐标。我试图重新实现我的 mouseReleaseEvent 但想知道我将如何实际使用这个重新实现的函数。
在主窗口中class:
self.tScn = QtGui.QGraphicsScene()
self.graphicsView_2 = QtGui.QGraphicsView(self.centralwidget, self.tScn)
在 MainConsumer class(派生自 MainWindow:
def pointSelection(self):
pos = self.tScn.mouseReleaseEvent(QMouseEvent)
print(pos)
def mouseReleaseEvent(self, QMouseEvent):
pos = QMouseEvent.lastScenePos()
print(pos)
return pos
python 给我这个警告:
AttributeError: 'PySide.QtGui.QMouseEvent' object has no attribute 'lastScenePos
'
我尝试了几种不同的顺序和结构,但没有任何效果,现在我对 PySide.QtGui.QGraphicsScene.mouseReleaseEvent(event)
、PySide.QtGui.QGraphicsSceneMouseEvent.lastScenePos()
、class PySide.QtGui.QGraphicsSceneMouseEvent([type=None])
和 QtCore.QEvent.GraphicsSceneMouseRelease
之间的关系感到非常困惑有人帮帮我吗?
谢谢!
创建一个 class 继承自 QGraphicsScene 并具有这样的信号
class MyGraphicsScene(QtGui.QGraphicsScene):
signalMousePos = QtCore.pyqtSignal(QtCore.QPointF)
def __init__(self, parent):
super(MyGraphicsScene, self).__init__(parent)
然后覆盖这个新 class
中的 mouseRelease 事件def mouseReleaseEvent(QGraphicsSceneMouseEvent):
pos = QGrapihcsSceneMouseEvent.lastScenePos()
self.signalMousePos.emit(pos)
然后在您的 MainConsumer class 中替换
self.tScn = QtGui.QGraphicsScene()
和
self.tScn = MyQGraphicsScene()
self.tScn.signalMousePos.connect(self.pointSelection)
pointSelection 变为
def pointSelection(self, pos)
#Whatever you want to do with the position coordinates
并且不再需要 MainConsumer 中的 mouseReleaseEvent