QGraphicsView如何添加 和改变图片大小!

本文档详细介绍了如何在Qt环境中利用QGraphicsView、QGraphicsScene和QGraphicsItem组件进行图像的添加及大小改变操作。通过创建Scale工程,在QWidget中布局,并添加ZoomIn和ZoomOut按钮,实现图像的缩放功能。点击按钮触发clicked信号,完成图像的放大和缩小功能。
摘要由CSDN通过智能技术生成

1 创建工程 Scale,基类为QWidget ,使用布局器布局,工程文件为 main.cpp widget.h widget.cpp 

    a 添加2个按钮控件 ZoomIn 和ZoomOut。

    b 添加控件QGraphicsView。

    c 信号为clicked

 

2  widget.h 里

#include <QtCore>
#include <QtGui>
#include <QGraphicsItem>
#include <QGraphicsView>

                
如果您想要在PyQt5中显示原图并允许用户通过滚轮缩放图片,可以使用QGraphicsViewQGraphicsScene。以下是示例代码: ```python import sys from PyQt5.QtGui import QPixmap, QWheelEvent from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene class ImageViewer(QGraphicsView): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建一个QGraphicsScene self.scene = QGraphicsScene(self) # 加载图片 pixmap = QPixmap('image.png') # 将图片添加QGraphicsScene中 self.scene.addPixmap(pixmap) # 将QGraphicsScene设置为视图的场景 self.setScene(self.scene) # 设置视图的大小策略为“保持大小” self.setResizeAnchor(QGraphicsView.AnchorViewCenter) self.setTransformationAnchor(QGraphicsView.AnchorViewCenter) self.setDragMode(QGraphicsView.ScrollHandDrag) self.setRenderHint(QGraphicsView.SmoothPixmapTransform) self.setRenderHint(QGraphicsView.HighQualityAntialiasing) self.setRenderHint(QGraphicsView.NonCosmeticDefaultPen) def wheelEvent(self, event: QWheelEvent) -> None: # 改变视图的缩放级别 scale_factor = 1.15 if event.angleDelta().y() > 0: self.scale(scale_factor, scale_factor) else: self.scale(1 / scale_factor, 1 / scale_factor) if __name__ == '__main__': app = QApplication(sys.argv) ex = ImageViewer() ex.show() sys.exit(app.exec_()) ``` 这个例子中,我们创建了一个名为ImageViewer的QGraphicsView,并在其中创建了一个QGraphicsScene。我们将图片加载到QGraphicsScene中,并将QGraphicsScene设置为视图的场景。然后,我们将视图的大小策略设置为“保持大小”,以确保它不会改变图片的大小。我们重写了wheelEvent()方法,以便用户可以通过滚轮缩放图片。最后,我们将视图显示在屏幕上。 注意,我们使用了一些额外的参数来将视图设置为更好的质量,比如平滑的像素变换、高质量的抗锯齿和默认的非化妆笔。这些参数是可选的,您可以根据自己的需要进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的杂货店

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值