请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 954|回复: 2
收起左侧

QT6中QCustomplot开启OpenGL报错怎么办

[复制链接]

4

主题

29

回帖

41

积分

新手上路

积分
41
发表于 2024-6-24 19:44:47 | 显示全部楼层 |阅读模式
请问在QT6中安装QCustomplot库后使用opengl运行报错,显示“QOpenGLFramebufferObject::bind() called from incompatible context”。

这个错误搜索出来是在void QCPPaintBufferGlFbo::draw(QCPPainter *painter) const中添加下列代码解决,但是在QT6中已经没有data方法了应该怎么办?
if (QOpenGLContext::currentContext() != mGlContext.data()) {
      mGlContext.data()->makeCurrent(mGlContext.data()->surface());
  }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
114092
QQ
发表于 2024-6-25 15:21:40 | 显示全部楼层
试试

在QT6中,如果您遇到“QOpenGLFramebufferObject::bind() called from incompatible context”错误,这通常是因为当前的OpenGL上下文与预期的上下文不匹配。在您提供的代码中,mGlContext.data() 方法可能已经被废弃。作为替代解决方案,您可以尝试使用QOpenGLContext::currentContext()来获取当前的上下文,并确保它与预期的上下文匹配。

以下是一个修改后的代码示例,它使用了QOpenGLContext::currentContext()来解决上下文问题:

if (QOpenGLContext::currentContext() != mGlContext.data()) {
    mGlContext.makeCurrent(mGlContext.surface());
}

这段代码会检查当前的OpenGL上下文是否与预期的上下_context相同。如果不同,它会将预期的上下文设置为当前上下文。这样可以避免错误“QOpenGLFramebufferObject::bind() called from incompatible context”出现。
回复

使用道具 举报

4

主题

29

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2024-6-26 09:33:11 | 显示全部楼层
eric2013 发表于 2024-6-25 15:21
试试

在QT6中,如果您遇到“QOpenGLFramebufferObject::bind() called from incompatible context”错误 ...

这个应该是gpt回复的吧,改了也是不对,我再找找吧,谢谢硬汉哥了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-2-19 22:38 , Processed in 0.273511 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表