将QGraphicsView添加到QGraphicsWidget

时间:2016-04-24 09:45:38

标签: python qt pyqt pyqt4

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

这就是我想要实现的目标,QGraphicsWidgets全部添加到QGraphicsScene中,每个小部件都有自己的QGraphicsScene和QGraphicsView。 enter image description here 大框表示主视图,较小的框表示小部件,每个小部件都有自己的视图和场景。

由于以下错误,我当前的实现无效:

  

TypeError:QGraphicsLinearLayout.addItem(QGraphicsLayoutItem):   参数1具有意外类型'QGraphicsView'

我在QGraphicsWidget

的子类中的实现
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。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

函数QGraphicsLinearLayout.addItem需要一个QGraphicsWidget参数,而您传递的是正常的QWidgetQGraphicsView)。

您可以使用专门用于将QGraphicsProxyWidget包裹到QWidget的课程QGraphicsWidget

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

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