我正在尝试制作一个使用 QGLWidgets 的多线程 Qt 应用程序,但我不断收到此错误。(我正在尝试使用 QPainter 从另一个线程进行绘制)
而且看起来我也因此而发生了巨大的内存泄漏。
错误是“QGLContext::makeCurrent() : wglMakeCurrent failed: The operation completed successfully”
我相信这与这里描述的 Qt 邮件列表中的一个相当老的问题有关。简而言之,如果调用 makeCurrent() 的线程不等于检索设备上下文的线程,则调用 GetDC()。如链接线程中所述,问题在于没有相应地调用 ReleaseDC(),导致句柄泄漏,并在某些时候触发 Windows 在对 GetDC() 的调用中返回 NULL,这使得 wglMakeCurrent() 失败。但是,我不知道为什么 GetLastError() 在这种情况下声称“操作成功完成”。