怎么让qt的label中显示的图片能够用滚轮控制放大缩小呢
时间: 2024-06-11 19:06:57 浏览: 25
可以通过QGraphicsView来实现图片的放大缩小,并将QLabel设置为QGraphicsView的viewport,然后使用滚轮事件来控制图片的缩放。
具体实现步骤如下:
1. 创建QGraphicsView实例,并设置图片为其场景(QGraphicsScene)的背景。
2. 将QLabel设置为QGraphicsView的viewport:
```python
label = QLabel()
view = QGraphicsView()
view.setScene(scene)
label.setMouseTracking(True)
label.setCentralWidget(view.viewport())
label.setFixedSize(QSize(800, 600))
```
3. 实现滚轮事件,通过改变QGraphicsView的缩放比例来实现图片的放大缩小:
```python
def wheelEvent(self, event: QWheelEvent):
view = self.centralWidget()
factor = 1.41 ** (event.angleDelta().y() / 240.0)
view.scale(factor, factor)
event.accept()
```
这样,当鼠标滚轮滚动时,就可以控制图片的放大缩小了。完整代码如下:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QSize, Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建场景及图片
scene = QGraphicsScene()
pixmap = QPixmap("image.jpg")
scene.addPixmap(pixmap)
# 创建视图,并将场景设置为其背景
view = QGraphicsView()
view.setScene(scene)
# 将QLabel设置为QGraphicsView的viewport
label = QLabel()
label.setMouseTracking(True)
label.setCentralWidget(view.viewport())
label.setFixedSize(QSize(800, 600))
self.setCentralWidget(label)
def wheelEvent(self, event: QWheelEvent):
view = self.centralWidget()
factor = 1.41 ** (event.angleDelta().y() / 240.0)
view.scale(factor, factor)
event.accept()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)