Question

Je suis sur le point de commencer à écrire une interface graphique pour une application de synthèse modulaire (comme Alsa modulaire Synth, Pure Data, Ingen) qui sera utilisé pour l'édition de patch (son).

Ce que je dois faire est quelque chose comme ceci:


(source: drobilla.net )

Pure Data


(source: mcgill.ca )

Donc, au fond, il est un domaine où je peux dessiner des rectangles (boîtes) qui représentent des modules de synthé avec les ports d'entrée et de sortie que je peux connecter avec des fils.

Le problème est que je ne peux pas comprendre comment deux créer un widget pour la zone d'édition: L'utilisation d'un simple contexte de dessin 2D où je dessine les boîtes semble manuellement être la seule façon logique de le faire, mais faire ce que je lâche toute la grande gestion des événements qui me donne qt.

Je me demande s'il y a la possibilité de créer une mise en page personnalisée qui prend simplement les coordonnées des créées « boîtes » et les mettre à l'écran, de sorte que je mets en œuvre les boîtes comme les sous-classes de QWidget (et la réutilisation du système de gestion des événements de qt) et je les ajoute à la fenêtre comme je le fais habituellement.

Ou peut-être il y a une meilleure façon?

Merci

Était-ce utile?

La solution

Jetez un oeil à QGraphicsScene et QGraphicsView. De cette façon, vous serez en mesure de créer une scène remplie d'objets. Chaque élément peut recevoir des événements de souris et vous pouvez peindre manuellement.

Autres conseils

Vous pouvez créer une classe de mise en page personnalisée qui hérite de QLayout et surcharger la fonction add (QWidget * w) avec les coordonnées.

J'utilise Personnellement QGraphicsView et QGraphicsScene. Vous pouvez gérer certains événements (comme événement de souris) et facilement trouver votre QGraphicsItem.

Jetez un oeil à Gephex sourcecode sur http://www.gephex.org/download.php

ils ont déjà construit un tel widget de Qt pour, bien que peut-être un peu vieux code (QT3) et de l'application spécifique.

ciao

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top