Pregunta

Estoy a punto de empezar a escribir una interfaz gráfica de usuario para una aplicación modular la síntesis (como Alsa Modular Synth, Pure Data, Ingen) que será utilizado para la edición de patches (sonido).

Lo que hay que hacer es algo como esto:

Ninguno
(fuente: drobilla.net )

Pure Data

hallseymrk1?
(fuente: mcgill.ca )

Así que, básicamente, es un área en la que puedo extraer algunas rectángulos (cajas) que representan los módulos de sintetizador con los puertos de entrada y salida que pueda conectarse con cables.

El problema es que no puedo encontrar la manera dos crean un widget para el área de edición: El uso de un contexto de dibujo 2D sencilla donde dibujar las cajas manualmente parece ser la única manera lógica de hacer esto, pero haciendo esto suelta toda la gran gestión de eventos que me da qt.

Me pregunto si hay la posibilidad de crear un diseño personalizado que simplemente toma las coordenadas de las "cajas" creadas y las puso en la pantalla, por lo que debo hacer para implementar las cajas como subclases de QWidget (y reutilizar sistema de manejo de eventos de Qt) y añado a la ventana como lo hago normalmente.

O tal vez hay una manera mejor?

Gracias

¿Fue útil?

Solución

Tome un vistazo a QGraphicsScene y QGraphicsView. De esta manera usted será capaz de crear una escena llena de artículos. Cada elemento puede recibir eventos de ratón y se puede pintar manualmente.

Otros consejos

Puede crear una clase de diseño personalizado que hereda de QLayout y sobrecargar el complemento (QWidget * w) función con las coordenadas.

Personalmente estoy usando QGraphicsView y QGraphicsScene. Puede manejar algunos eventos (como evento de ratón) y encontrar fácilmente su QGraphicsItem.

Tener un vistazo a Gephex código fuente en http://www.gephex.org/download.php

que ya han construido un widget como para Qt, aunque podría ser un poco viejo código (QT3) y la aplicación específica.

Ciao

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