关于python:将QGraphicsView添加到QGraphicsWidget

Add a QGraphicsView to a QGraphicsWidget

我正在尝试在QGraphicsWidget中显示QGraphicsView,但似乎无法正常工作。

这是我想要实现的,其中QGraphicsWidgets都添加到了QGraphicsScene中,并且每个小部件都有自己的QGraphicsScene和QGraphicsView。
enter image description here
大框代表主视图,小框代表小部件,每个小部件都有自己的视图和场景。

由于出现以下错误,我当前的实现无法正常工作:

TypeError: QGraphicsLinearLayout.addItem(QGraphicsLayoutItem):
argument 1 has unexpected type 'QGraphicsView'

我在QGraphicsWidget的子类中的实现:

1
2
3
4
5
6
self.scene = QtGui.QGraphicsScene(self)
self.view = QtGui.QGraphicsView(self.scene)
self.view.setRenderHint(QtGui.QPainter.Antialiasing)

self.setLayout(QtGui.QGraphicsLinearLayout(Qt.Vertical))
self.layout().addItem(self.view)

我尝试使用QGraphicsLayoutItem来实现这一点,但找不到任何地方可以将QGraphicsView插入其中。

任何帮助,将不胜感激。


函数QGraphicsLinearLayout.addItem需要一个QGraphicsWidget参数,并且您正在传递普通的QWidget(QGraphicsView)。

您可以使用专门设计用于将QWidget包装到QGraphicsWidget中的类QGraphicsProxyWidget

我手上没有Qt + Python,但我认为它应该如下所示:

1
2
proxy = parentView.addWidget(nestedView) # QWidget -> QGraphicsWidget
self.layout().addItem(proxy)