如何将图片添加到QGraphicsView

我要把图像放到QGraphicsView上。但我在动态添加时遇到了一些困难。我从test.ui加载QGraphicsView本身。该窗口具有按钮(id打开)和QGraphicsView本身(id gv)。程序在运行时崩溃了

self.scene.setSceneRect (0, 0, 400, 400)

也就是说,程序启动。按钮起作用了。但是在选择一个图像之后,它崩溃了。我不知道这是什么意思,但也许它会有用:

Process finished with exit code -1073740791 (0xC0000409)

代码如下:

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5 import QtWidgets


class MyWin(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        uic.loadUi("test.ui", self)

        self.open.clicked.connect(self.load)

    def load(self):
        file_name, _ = QFileDialog.getOpenFileName(
            self, 'Open file', '.', 'Image Files (*.png *.jpg *.bmp)')
        if not file_name:
            return
        self.image_qt = QImage(file_name)

        pic = QGraphicsPixmapItem()
        pic.setPixmap(QPixmap.fromImage(self.image_qt))
        self.scene.setSceneRect(0, 0, 400, 400)
        self.orig_gv.scene.addItem(pic)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    dlgMain = MyWin()
    dlgMain.show()
    sys.exit(app.exec_())

下面是test.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QPushButton" name="open">
      <property name="text">
       <string>open</string>
      </property>
     </widget>
    </item>
    <item>
     <widget class="QGraphicsView" name="gv"/>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

转载请注明出处:http://www.resmedchina.com/article/20230526/1948213.html