当前位置: 首页> 娱乐> 明星 > 技术开发_企业查询系统官网天眼查免费_成人本科报考官网_小程序开发模板

技术开发_企业查询系统官网天眼查免费_成人本科报考官网_小程序开发模板

时间:2025/7/14 18:34:00来源:https://blog.csdn.net/zhango5/article/details/147104611 浏览次数:0次
技术开发_企业查询系统官网天眼查免费_成人本科报考官网_小程序开发模板

1. 需求是这个样子的

        有一个 pyqtgraph.opengl.GLViewWidget ,在应用启动时存在QMainWindow中,即父对象是QMainWindow,当业务需要时,修改它的父对象变为一个QDialog,可以让它从QMainWindow中弹出显示在QDialog里,继而可以全屏显示。

        不知道我说清楚了吗?T_T

 2. 问题来了

        在创建QDialog,将GLViewWidget移动至QDialog后,报错显示如下:

3. 解决问题

        首先,搜索问题找到GitHub上的帖子,指出原因是QOpenGLWidget不能属于两个窗口。需要设置:

QApplication.setAttribute(Qt.AA_ShareOpenGLContexts)

这句是PyQt的代码???而我是PySide6。

帖子: https://github.com/pyqtgraph/pyqtgraph/issues/2900

于是,我在程序开始时加上了这一句。

    app = QApplication(sys.argv)QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts)

        然后,再次执行的时候,确实不报错了,但是弹出的QDialog里面有两个GLViewWidget,一个正向,一个倒向,画面错乱,不可用。

        最后,翻看Qt Assistant里对 Qt::AA_ShareOpenGLContexts 的说明:

Enables resource sharing between the OpenGL contexts used by classes like QOpenGLWidget and QQuickWidget. This allows sharing OpenGL resources, like textures, between QOpenGLWidget instances that belong to different top-level windows. This attribute must be set before QGuiApplication is constructed. This value was added in Qt 5.4.

        这里说到“This attribute must be set before QGuiApplication is constructed.” 所以这个属性的设置应该放在App构建之前。

        修改如下:

    QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts)app = QApplication(sys.argv)

        嗯嗯,好了,不报错了~~~

关键字:技术开发_企业查询系统官网天眼查免费_成人本科报考官网_小程序开发模板

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: