UI-Fehler: QOpenGLContext::makeCurrent() wurde nach dem Upgrade auf QT 6 mit einer Nicht-OpenGL-Oberfläche aufgerufen
Posted: 03 Jan 2025, 03:32
meine Konfiguration sieht so aus:
Ich habe ein QWindow, das ein QTabWidget enthält, und dieses TabWidget hat zwei untergeordnete Widgets
Der OccQtViewer ist von QOpenGLWidget geerbt und enthält alle OCC-bezogenen Dinge wie diesen:

Nach dem Wechsel vom ersten zum zweiten Tab wird die Benutzeroberfläche durcheinander gebracht und die Tabs reagieren nicht mehr Durch Klicken auf mehr und gleichzeitig wurden folgende Warnmeldungen ausgedruckt:
Und ich habe den gesamten zugehörigen Quellcode hier angehängt
und
Ich habe festgestellt, dass ein ähnliches Problem hier gemeldet wurde:
Und habe den darin enthaltenen Vorschlag ausprobiert,SurfaceType wie folgt festzulegen:
Kein Glück, das könnte ein Kompatibilitätsproblem sein,
aber ich bin mir nicht sicher, ob dieses Problem von OCC oder QT_6 (unter Linux) herrührt.
Code: Select all
Ubuntu 24.04
OCC 7.8.1
QT 6.4.2
Code: Select all
First tab simply associates with a QPushButton
Second tab associates with an OccQtViewer

Nach dem Wechsel vom ersten zum zweiten Tab wird die Benutzeroberfläche durcheinander gebracht und die Tabs reagieren nicht mehr Durch Klicken auf mehr und gleichzeitig wurden folgende Warnmeldungen ausgedruckt:
Code: Select all
QOpenGLContext::makeCurrent() called with non-opengl surface 0x5c468b22deb0
QRhiGles2: Failed to make context current. Expect bad things to happen.
QOpenGLContext::makeCurrent() called with non-opengl surface 0x5c468b22deb0
QRhiGles2: Failed to make context current. Expect bad things to happen.
QOpenGLContext::makeCurrent() called with non-opengl surface 0x5c468b22deb0
QRhiGles2: Failed to make context current. Expect bad things to happen.
...
Code: Select all
https://dev.opencascade.org/system/files/forum/occqt.zip
Code: Select all
Under Windows, same code works fine with Qt_6
Under linux, it works fine with Qt_5, but with Qt_6, it will print out above warnings.
Code: Select all
https://github.com/MythTV/mythtv/issues/754
Code: Select all
QWidget* native = nativeParentWidget();
windowHandle()->setSurfaceType(QWindow::OpenGLSurface);
if (native && native->windowHandle())
native->windowHandle()->setSurfaceType(QWindow::OpenGLSurface);
aber ich bin mir nicht sicher, ob dieses Problem von OCC oder QT_6 (unter Linux) herrührt.
Code: Select all
Would you please help to fix this issue?