qt鼠标悬停图片放大_QGraphicsView使用鼠标滚轮在鼠标位置放大和缩小
时间: 2023-08-26 15:14:51 浏览: 216
可以通过以下代码实现QGraphicsView使用鼠标滚轮在鼠标位置放大和缩小的功能:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene
class MyGraphicsView(QGraphicsView):
def __init__(self, parent=None):
super().__init__(parent)
self.setRenderHint(QPainter.Antialiasing, True)
self.setRenderHint(QPainter.SmoothPixmapTransform, True)
self.setDragMode(QGraphicsView.ScrollHandDrag)
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
self.setResizeAnchor(QGraphicsView.AnchorUnderMouse)
self.setMouseTracking(True)
self.setInteractive(True)
self.setScene(QGraphicsScene(self))
def wheelEvent(self, event):
zoomInFactor = 1.25
zoomOutFactor = 1 / zoomInFactor
oldPos = self.mapToScene(event.pos())
if event.angleDelta().y() > 0:
zoomFactor = zoomInFactor
else:
zoomFactor = zoomOutFactor
self.scale(zoomFactor, zoomFactor)
newPos = self.mapToScene(event.pos())
delta = newPos - oldPos
self.translate(delta.x(), delta.y())
```
在这个实现中,我们首先创建了一个继承自QGraphicsView的MyGraphicsView类,并重写了wheelEvent方法,在该方法中实现了鼠标滚轮缩放的功能。具体来说,我们首先获取鼠标滚轮滚动的方向,然后根据方向缩放视图。接着获取鼠标滚轮滚动前后在场景中的位置差,然后平移视图以使放大和缩小的中心点在鼠标位置。
阅读全文