Domanda

Sto per iniziare a scrivere una GUI per una sintesi un'applicazione modulare (come Alsa Modular Synth, Pure Data, Ingen) che verrà utilizzato per la patch (suono) la modifica.

Che cosa devo fare è qualcosa di simile a questo:

Ingen
(fonte: drobilla.net )

Pure Data

hallseymrk1?
(fonte: mcgill.ca )

Quindi, fondamentalmente, è una zona dove posso disegnare dei rettangoli (scatole) che rappresentano moduli synth di porte di ingresso e di uscita che posso collegare con fili.

Il problema è che non riesco a capire come due creano un widget per l'area di editing: Utilizzando un semplice contesto disegno 2D in cui traggo le scatole sembra manualmente per essere l'unico modo logico per fare questo, ma facendo questo ho sciolto tutte le grandi gestione degli eventi che mi dà qt.

Mi chiedo se c'è la possibilità di creare un layout personalizzato che prende semplicemente le coordinate di "scatole" creati e metterli sullo schermo, in modo che a implementare le scatole come sottoclassi di QWidget (e riutilizzare il sistema di gestione degli eventi di qt) e li aggiungo alla finestra come faccio di solito.

O forse c'è un modo migliore?

Grazie

È stato utile?

Soluzione

Date un'occhiata a QGraphicsScene e QGraphicsView. In questo modo si sarà in grado di creare una scena piena di oggetti. Ogni elemento può ricevere eventi del mouse e si può dipingere manualmente.

Altri suggerimenti

È possibile creare una classe di layout personalizzato che eredita da QLayout e sovraccaricare l'add (QWidget * w) funzione con le coordinate.

Personalmente sto utilizzando QGraphicsView e QGraphicsScene. È possibile gestire alcuni eventi (come evento del mouse) e facilmente trovare il vostro QGraphicsItem.

Date un'occhiata al codice sorgente Gephex su http://www.gephex.org/download.php

hanno già costruito un tale widget di per Qt, anche se potrebbe essere un po 'vecchio codice (QT3) e l'applicazione specifica.

Ciao

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top