qt qgraphicsview内就一张图怎么自适应
时间: 2023-12-01 12:56:40 浏览: 269
QGraphicsView QGraphics 窗口自适应
图片大小?
为了让QGraphicsView内的图片自适应大小,可以使用fitInView方法。首先,使用QPixmap加载要显示的图片,然后将其设置为QGraphicsPixmapItem的Pixmap。接下来,将QGraphicsPixmapItem添加到QGraphicsScene中,并使用QGraphicsView来显示。最后,使用fitInView将场景中的项“自适应”到视图中,使图像适应视图大小。
示例代码如下:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QApplication
class MyGraphicsView(QGraphicsView):
def __init__(self, parent=None):
super().__init__(parent)
def show_image(self, image_path):
# 1. 加载图片
pixmap = QPixmap(image_path)
# 2. 创建QGraphicsPixmapItem
pixmap_item = QGraphicsPixmapItem(pixmap)
# 3. 创建QGraphicsScene,并将QGraphicsPixmapItem添加到其中
scene = QGraphicsScene(self)
scene.addItem(pixmap_item)
# 4. 设置场景大小,并将其与视图关联
scene.setSceneRect(pixmap_item.boundingRect())
self.setScene(scene)
# 5. 使视图显示场景中的所有项,并将图像适应视图大小
self.setRenderHint(QPainter.Antialiasing, True)
self.setRenderHint(QPainter.SmoothPixmapTransform, True)
self.setDragMode(QGraphicsView.ScrollHandDrag)
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
self.setResizeAnchor(QGraphicsView.AnchorUnderMouse)
self.fitInView(scene.sceneRect(), Qt.KeepAspectRatio)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
view = MyGraphicsView()
view.show_image('image.png')
view.show()
sys.exit(app.exec_())
```
当用户选择“放大”或“缩小”时,图像将适应视图大小。
阅读全文