Estoy tratando de implementar una escena OpenGL personalizada (envuelta en un QGLWidget), pero todavía uso controles QT (como barras deslizantes y botones). Intenté hacer de mi widget principal un QGLWidget, que tiene QWidgets como niños. Los widgets secundarios parecen funcionar (cuando hago clic en un menú desplegable, aparecen sus opciones), pero el widget no se dibuja (veo un cuadrado blanco). Cambié la clase base de los widgets de mis hijos de QWidget a QGLWidget, y ahora las llamadas a QPainter funcionan, pero las cosas de QT GUI aún no se muestran ...QGLWidget para gráficos y QT para GUI
Algunos afirman que un QGLWidget no puede tener QWidgets como niños ... I No estoy seguro de eso y no estoy dispuesto a darme por vencido. Por cierto, estoy usando Visualization Library para dibujar la escena OpenGL, pero es solo un contenedor OpenGL ...
¿Alguna pista donde podría estar el problema? Además, los eventos clave dejan de procesarse por algún motivo cuando agrego subwidgets al GQLWidget.
Actualización: Probé varias combinaciones de widgets y diseños. Parece que QGLWidget simplemente se dibuja encima de cualquier cosa. Incluso probé con raise() para ordenar la profundidad Z de los widgets, sin éxito. ¿OverlayGL() es la única forma de dibujar encima de un widget OpenGL?
Actualización 2 Después de meses de intentarlo, me di cuenta de que es algo relacionado con QT. Cada vez que se dibuja un QGLWidget encima de otro QGLWidget, no se llama a la función background() del primer. Entonces, hay un botón y se puede hacer clic en él, pero no se dibuja. Mi solución fue dibujar todo usando QPainter, eso funciona. Lo que encuentro curioso es que uno tiene que usar QPainter :: startNativePainting() para dibujar con él. Uno esperaría que sobrecarguen start() en QPainter para llamar a startNativePainting() siempre que un QGLWidget sea el dispositivo de pintura ...
Otro hecho (quizás útil) es que QPainter llama a CHANGE el contexto de OpenGL. Entonces, si tiene otra herramienta en cooperación con QPainter (en mi caso, Visualization Library), es probable que una de ellas falle (en mi caso, VL verifica si el estado del contexto se ha borrado antes de cada cuadro).
¿No puede crear un widget no GL como la ventana principal y un widget GL como su hijo? ? Por lo tanto, los otros controles que desee en su ventana serán hermanos y primos de la ventana GL en lugar de hijos. –
Lo intenté primero - no se queja de algunos problemas GL_SRC_ALPHA. QGLWidget está construido por VL [link] (http://www.visualizationlibrary.org/) y es muy complejo y, por lo tanto, difícil de depurar ... –
¿Está intentando que los objetos derivados de QWidget floten en la parte superior de un QGLWidget? – cmannett85