Pregunta

Estoy escribiendo un programa en OpenGL y necesito algún tipo de interfaz de barra de herramientas. Mi reacción inicial fue usar una interfaz gráfica de usuario, a continuación, una mayor investigación en C ++ me di cuenta de que la interfaz gráfica de usuario de dependen del sistema operativo que esté utilizando (Estoy en Windows). Por lo tanto, decidí usar QT para ayudarme.

Mi pregunta es si estoy tomando el mejor enfoque / adecuada a esta solución. Soy incluso capaz de escribir mi programa OpenGL y tener la interfaz gráfica de usuario que quiero crear interfaz con el código C ++ para hacer lo que quiero que haga.

Por ejemplo, Si creo un simple "panel de control" con flechas en cada dirección. Y en la pantalla Tengo un objeto de cuadro creado por exceso puedo conectar las flechas para hacer clic en ellas e interactuar con el programa de OpenGL para mover la caja?

¿Fue útil?

Solución

El uso de Qt es coherente para su problema: proporciona una buena integración de OpenGL a través del módulo QtOpenGL

.
  1. Derivar sus clases de indicación de QGLWidget (hasta Qt 4.8) o desde QOpenGLWidget (desde Qt 5.4) y poner en práctica los métodos virtuales paintGL() etc.
  2. Usted tendrá acceso a la alarma y la ranura de la Qt para que usted será capaz de atrapar eventos GUI y actualizar la visualización OpenGL.

Otros consejos

Puede utilizar los widgets regulares no OpenGL Qt en la parte superior de un QGLWidget así que lo que usted describe es factible.

Una cosa que me encontré al hacer esto era que los reproductores regulares tuvieron que ser opaco. En el momento en que fueron transparentes de ninguna manera hubo todo tipo de basura debajo de ellos. Eso fue hace un tiempo así que tal vez las últimas direcciones de versión de este tema. Puede haber sido específico de la plataforma también, así que tu caso es distinto.

Manténgase en GLUT. No hay necesidad de añadir Qt para un panel de control. Se podría abrir una ventana secundaria (o segunda ventana, lo que funciona mejor para el diseño de programas), y dibujar los controles en esa ventana, y el uso de GLUT para manejar la interacción con el ratón.

Además, Qt y GLUT cada uno tiene sus propios bucles de eventos. Para utilizar solo bucle de eventos de Qt, que tendría que abandonar gran parte de la estructura de GLUT, ya que el bucle de eventos de GLUT no estaría allí para llamar a sus funciones de devolución de llamada. Qt tiene la funcionalidad de haber dejado que alguien bucle de eventos cosa llamada código de procesamiento de eventos de Qt, pero no creo que hay una manera fácil de hacer parte GLUT de la información del evento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top