【问题标题】:what does "QGLContext::makeCurrent() : wglMakeCurrent failed: The operation completed successfully" mean?“QGLContext::makeCurrent() : wglMakeCurrent failed: The operation completed successfully” 是什么意思?
【发布时间】:2012-03-05 09:43:40
【问题描述】:
我正在尝试制作一个使用 QGLWidgets 的多线程 Qt 应用程序,但我不断收到此错误。(我正在尝试使用 QPainter 从另一个线程进行绘制)
而且看起来我也因此出现了巨大的内存泄漏。
错误是“QGLContext::makeCurrent() : wglMakeCurrent failed: The operation completed successfully”
【问题讨论】:
标签:
qt
opengl
qt4
qglwidget
qt4.8
【解决方案1】:
我相信这与 Qt 邮件列表中的一个相当老的问题有关,如 here 所述。简而言之,如果调用 makeCurrent() 的线程不等于检索设备上下文的线程,则调用 GetDC()。如链接线程中所述,问题在于没有相应地调用 ReleaseDC(),导致句柄泄漏,并在某些时候触发 Windows 在对 GetDC() 的调用中返回 NULL,这使得 wglMakeCurrent() 失败。但是,我不知道为什么在这种情况下 GetLastError() 声称“操作已成功完成”。