前段时间我创建了一个子类QGraphicsView
,我称之为MultiWidget
. 它的目的是保存我使用的其他一些小部件,我使用 addWidget 添加到QGraphicsScene
关联到我的MultiWidget
.
这个想法是,MultiWidget
应该呈现所有这些添加的小部件的“笔记本式”视图,从上到下显示它们,一个在另一个下,并给(作为一个额外的噱头)一个小绿色旋钮,用它可以切换小部件隐藏和显示之间:
现在我尝试添加一个新的小部件GPURenderWidget
,从QOpenGLWidget
withaddWidget
方法派生MultiWidget
,它首先看起来没有错误。但是: 显示的内容GPURenderWidget
没有在 :paintGL
的窗格上正确显示MultiWidget
: 显示了初始图片,但是尽管在一系列paintGL
调用中生成了新帧,但GPURenderWidget
MultiWidget 中的视图没有得到更新(以下是呈现的静止视图):
我已经将我viewport
的设置MultiWidget
为OpenGL-form
via
setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
我是否被迫放弃这种方法?什么是最好的选择?我应该创建一个GPURenderItem
派生的QGraphicsItem
并将其添加到QGraphicsView
viaaddItem()
吗?但我更愿意GPURenderWidget
保留一个QOpenGLWidget
,以便它可以在其他地方用作独立的小部件。还是我必须牺牲整个MultiWidget
方法addWidget
来 a QGraphicsScene
?