IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Interface de manche virtuel guitare & QML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut Interface de manche virtuel guitare & QML
    Bonjour,

    Pour le développement d'un projet de jeux de guitare, je vais devoir implémenter une interface contenant un manche virtuel de guitare. Voici une image montrant un manche virtuel tiré de guitar-pro qui montre clairement le genre de rendu que j'attends :



    Avec la sortie récente de Qt 4.7 et l'arrivée du langage QML, j'aimerais me lancer dans un développement en QML. Seulement, je ne sais pas vraiment comment m'y prendre bien que je parcours actuellement la documentation QML

    Ce type d'interface est-il réalisable seulement avec QML (les éléments QML suffisent-ils au développement) ou doit-on associer au langage QML Qt C++ en utilisant un objet QtDeclarative (QtDeclarativeView ?) ?

    Je vous remercie !

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour betsprite

    En fait, en pratique, tu as une image de fond (le manche de la guitare), 3 images de cercles de différentes couleurs (rouge, bleu, jaune) dans lesquels tu affiches du texte (les notes).
    Donc, il te suffit d'utiliser des Rectangle, des Image et du texte et de gérer les positions (x, y) des notes.

  3. #3
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Bonjour et merci gbdivers pour ta réponse

    Citation Envoyé par gbdivers
    Donc, il te suffit d'utiliser des Rectangle, des Image et du texte et de gérer les positions (x, y) des notes.
    Pour les coordonnées, comment je définis mon système initialement ? J'ai un grand rectangle contenant l'image du manche mais comment faire pour placer les notes rigoureusement et pas à chaque fois donner la position de chaque image (rond coloré + texte) relativement au rectangle ?
    En gros, est-il possible de découper mon rectangle en un système quadrillé pour plus de rigueur ?

    Merci

  4. #4
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Bah deux options principales:

    - Soit tu fait simple, toutes les cases de la même taille, et donc la tu divise la largeur de ton espace où tu dessine par le nombre de cases que tu veux afficher.

    - Soit tu fais plus réaliste, en vrai les cases sont de longueur décroissante selon une suite géométrique (comme sur ton image la), une petite recherche sur google devrait te donner ce que tu veux :p

  5. #5
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci haraelendil !

    Citation Envoyé par haraelendil
    tu divise la largeur de ton espace où tu dessine par le nombre de cases que tu veux afficher.
    Je vais plutôt opter pour la deuxième possibilité, seulement je relève cette phrase car justement, quand tu dis "on divise la largeur par le nombre de cases affichées", quel objet tu définis pour faire ton "quadrillage" ?

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Pour la première méthode, tu peux utiliser GridView, qui est un équivalant de QGridLayout et qui permet de positionner des items dans une grille.

    Pour la seconde méthode, comme ton image est fixe, tu peux pré-calculer les positions et les enregistrer dans un tableau. Un simple fonction javascript permet de les récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Item
    {
       function move(i, j)
       {
          var x_values = [10, 40, 65, 80, ... ]; // positions x sur les frètes
          var y_values = [ 10, 30, 50, 70, 90, 110 ]; // positions y sur les cordes
          x: x_values[i];
          y: y_values[j];
       }
    }

Discussions similaires

  1. Capturer une interface virtuelle
    Par PoP_NicoW dans le forum Virtualisation
    Réponses: 1
    Dernier message: 24/05/2010, 11h09
  2. [debian] comment créer interface virtuelle wifi
    Par altair8080 dans le forum Réseau
    Réponses: 0
    Dernier message: 23/07/2007, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo