首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QOpenGLWidget中通过addWidget嵌入QGraphicsScene

在QOpenGLWidget中通过addWidget嵌入QGraphicsScene
EN

Stack Overflow用户
提问于 2021-02-06 15:03:58
回答 1查看 253关注 0票数 1

不久前,我创建了一个QGraphicsView的子类,我称之为MultiWidget。它的目的是保存我使用的其他小部件,我将这些小部件与addWidget一起添加到与QGraphicsScene相关联的MultiWidget中。

其想法是,MultiWidget应该呈现所有这些添加的小部件的“像笔记本一样”的视图,从上到下显示它们,一个在另一个下面显示,然后(作为一个额外的噱头)提供一个绿色的小旋钮,可以在隐藏的和显示的之间切换:

现在,我尝试添加一个新的小部件GPURenderWidget,它是从QOpenGLWidget派生出来的,它使用了MultiWidgetaddWidget方法,该方法最初似乎没有出错。但是:通过paintGL显示的paintGL的内容不能正确地显示在MultiWidget的窗格上:显示了初始图片,但是尽管在GPURenderWidget中的paintGL调用序列中生成了新的帧,但MultiWidget中的视图没有被更新(下面是显示的静止视图):

我已经将viewport of my MultiWidget设置为OpenGL-form

代码语言:javascript
复制
 setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));

我是不是被迫放弃这种做法?最好的选择是什么?我应该创建一个从QGraphicsItem派生的QGraphicsItem并通过addItem()将它添加到QGraphicsView中吗?但是我更愿意让GPURenderWidget保持一个QOpenGLWidget,这样它就可以在其他地方作为独立的小部件使用。或者我必须把整个MultiWidget-approach和addWidget一起牺牲给QGraphicsScene

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-06 17:20:32

QGraphicsProxyWidget的文档有一些注释/警告,特别是.

警告:这个类是为了方便而提供的,当连接QWidgets和QGraphicsItems时,它不应该用于高性能的场景。特别是,将小部件嵌入到场景中,然后通过使用QGraphicsView视口的OpenGL显示,并不能适用于所有组合。

还有..。

请注意,不能嵌入具有Qt::WA_PaintOnScreen小部件属性集的小部件和包装外部应用程序或控制器的小部件。例如QOpenGLWidget和QAxWidget。

因此,我认为在直接将QOpenGLWidget嵌入到QGraphicsScene中是不走运的。

一种可能的选择是使用帧缓冲对象进行OpenGL呈现,并将从FBO生成的帧抓取/混合到一个可以嵌入的更简单的定制小部件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66078292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档