pyqt5 父类窗口class Ui_MainWindow()有一个控件QGraphicsView,怎么样让子类QGraphicsView继承父类Ui_MainWindow,可以进行图片显示,放大缩小
时间: 2024-02-02 19:40:04 浏览: 19
可以通过将QGraphicsView放在一个自定义的QWidget中,然后将该QWidget作为Ui_MainWindow的一个子控件来实现继承。
具体步骤如下:
1. 在子类中创建一个继承自QWidget的自定义控件,例如叫做MyGraphicsView。
```python
class MyGraphicsView(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.graphicsView = QGraphicsView(self)
```
2. 在子类中重写父类的构造函数,并在其中使用父类的setupUi()方法来设置UI界面。同时,将MyGraphicsView作为父类窗口的一个子控件。
```python
class MyMainWindow(Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.myGraphicsView = MyGraphicsView(self.centralwidget)
self.verticalLayout.addWidget(self.myGraphicsView)
```
3. 在MyGraphicsView中实现图片的显示和放大缩小功能。例如,可以在MyGraphicsView中添加以下方法:
```python
class MyGraphicsView(QWidget):
...
def setImage(self, image):
scene = QGraphicsScene()
pixmap = QPixmap.fromImage(image)
scene.addPixmap(pixmap)
self.graphicsView.setScene(scene)
def zoomIn(self):
self.graphicsView.scale(1.2, 1.2)
def zoomOut(self):
self.graphicsView.scale(0.8, 0.8)
```
4. 在父类窗口中连接对应的信号和槽函数,实现放大缩小功能。
```python
class MyMainWindow(Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
...
self.actionZoom_In.triggered.connect(self.myGraphicsView.zoomIn)
self.actionZoom_Out.triggered.connect(self.myGraphicsView.zoomOut)
```
这样,子类就可以继承父类的UI界面,并在MyGraphicsView中实现图片显示和放大缩小功能。