qgraphicsview 在键盘事件中获取鼠标当前位置
时间: 2023-10-11 20:06:42 浏览: 121
获取当前鼠标的位置
在QGraphicsView的键盘事件中获取鼠标当前位置需要使用到QCursor类和viewport()函数。
QCursor类提供了一些方法来获取鼠标当前的位置,而viewport()函数返回QGraphicsView的视口。
以下是获取鼠标当前位置的示例代码:
```python
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene
from PyQt5.QtGui import QCursor
class MyGraphicsView(QGraphicsView):
def __init__(self, parent=None):
super(MyGraphicsView, self).__init__(parent)
self.setScene(QGraphicsScene(self))
def keyPressEvent(self, event):
if event.key() == Qt.Key_A:
mouse_pos = QCursor.pos()
viewport_pos = self.viewport().mapFromGlobal(mouse_pos)
scene_pos = self.mapToScene(viewport_pos)
print("Mouse position:", scene_pos)
else:
super(MyGraphicsView, self).keyPressEvent(event)
```
在上述代码中,我们重写了QGraphicsView的keyPressEvent()函数来获取键盘事件。如果按下了A键,我们使用QCursor类获取鼠标当前的位置,然后使用viewport()函数将其转换为视口坐标,最后使用mapToScene()函数将其转换为场景坐标,并打印输出。
需要注意的是,QCursor.pos()返回的是全局坐标,而viewport()函数返回的是相对于QGraphicsView的坐标。因此,我们需要使用viewport()函数将QCursor.pos()转换为QGraphicsView的坐标。
阅读全文