qgraphicsview 实时获取鼠标当前位置
时间: 2023-07-01 16:15:14 浏览: 239
您可以通过重写`QGraphicsView`的`mouseMoveEvent`函数来实时获取鼠标当前位置。具体实现方法如下:
```python
class MyGraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
def mouseMoveEvent(self, event):
pos = event.pos()
# pos就是当前鼠标的位置
# 进行你需要的操作
super().mouseMoveEvent(event)
```
在这个重写的函数中,我们可以通过`event.pos()`获取当前鼠标的位置,并进行相应的操作。同时,我们还需要调用父类的`mouseMoveEvent`函数,以确保其他的鼠标移动事件也能正常触发。
相关问题
qgraphicsview 获取鼠标当前位置
您可以使用QGraphicsView的mapToScene()函数将鼠标的屏幕坐标转换为场景坐标,然后再使用QGraphicsScene的itemAt()函数获取鼠标下的图形项。以下是示例代码:
```python
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene
class MyGraphicsView(QGraphicsView):
def __init__(self, parent=None):
super(MyGraphicsView, self).__init__(parent)
self.setScene(QGraphicsScene(self))
self.setMouseTracking(True)
def mouseMoveEvent(self, event):
pos = event.pos()
scene_pos = self.mapToScene(pos)
item = self.scene().itemAt(scene_pos, self.transform())
if item is not None:
print("Mouse is over item:", item)
else:
print("Mouse is over scene at position:", scene_pos)
```
在上述代码中,我们重写了QGraphicsView的mouseMoveEvent()函数来获取鼠标移动事件。我们首先获取鼠标的屏幕坐标,然后使用mapToScene()函数将其转换为场景坐标。然后使用itemAt()函数获取鼠标下的图形项。如果找到了图形项,则打印其信息,否则打印鼠标在场景中的位置。
qgraphicsview 在键盘事件中获取鼠标当前位置
在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的坐标。
阅读全文