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 :

Glisser-déposer entre deux QTreeView

  1. #21
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Tu remarqueras que de toute façon ce paramètre est optionnel, en général on n'a pas besoin de se servir des internalPointer ou de redéfinir index() (on prend index.row()/column() et on retourne tabItem[index.row()] par exemple). Après c'est toi qui vois, tu peux très bien enregistrer un pointeur sur le même objet Joueur que le parent pour l'avoir directement (même si ce n'est pas coûteux de faire index.parent().internalPointer() ). Ce que j'appelle "enregistrer dans l'internalPointer" c'est bien d'utiliser cette possibilité optionnelle du pointeur void* dans un objet QModelIndex pour pointer directement l'objet qu'on veut plutôt que de faire un accès plus coûteux dans la QList ou autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // index ( row, column, parent )
    Cas 1 :
    parent invalide
    createIndex ( row, column, uneEquipe )
     
    Cas 2 :
    grand-parent invalide
    createIndex ( row, column, unJoueur )
     
    Cas 3 :
    arrière-grand-parent invalide
    createIndex ( row, column )
     
    Autre :
    QModelIndex()
    C'est glauque mais bon on se comprend :p

    Et ensuite selon ton implémentation de la création des index, tu vas en tirer partie dans data() pour retourner les données ou dans setData() pour les modifier.

  2. #22
    Membre confirmé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Points : 528
    Points
    528
    Par défaut
    Salut Troudhyl et merci

    J'ai bien avancé dans mon modèle mais il reste malgré tout un problème

    En fait, lorsque j'insère un Joueur par exemple, je voudrais qu'il se place directement dans le camp approprié.

    Le problème, c'est que, quand j'appelle insertRow avec mon Joueur en entrée, je ne vois pas comment je peux connaître l'index de son parent.

    Pour un drag & drop, j'imagine que l'index en entrée de la méthode dropMimeData() appelée automatiquement lors du drop correspond à l'emplacement donc j'ai déjà le parent.

    Mais au début, pour faire des insert de ma liste de Joueurs dans les Camp, je ne sais pas comment récupérer le modelIndex des Camp :s

    Merci beaucoup

    Edit : J'ai vu dans la documentation que :

    If you insert or remove an item with children, you do not need to call these functions for the child items. In other words, the parent item will take care of its child items.
    Le problème serait donc réglé si je rempli d'abord ma liste de Joueurs dans mes Camps et que j'insère juste mes Camps ensuite dans le modèle.

    Cependant, comment faire si je veux d'abord insérer des Camps et plus tard seulement des Joueurs dans ces Camps ? je suis obligé de passer par un insertRow et en voulant passer l'index du parent à beginInsert je me retrouve bloqué car je ne l'ai pas...

    Ou alors, je parcours mes index via la méthode index en commençant avec le parent QModelIndex() (premier niveau), je récupère le Camp de chaque index de ce niveau, regarde si le Joueur que je veux insérer appartient à celui-ci et donc j'ai l'index du parent ... ça fonctionnerait ?)

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/11/2014, 11h36
  2. Glisser-déposer entre QWidget différents
    Par EvaBraun dans le forum Débuter
    Réponses: 1
    Dernier message: 24/11/2012, 10h59
  3. Glisser-déposer entre deux zones de listes
    Par Arkham46 dans le forum Contribuez
    Réponses: 2
    Dernier message: 13/04/2012, 12h20
  4. Glisser-déposer entre ListView
    Par Troudhyl dans le forum Qt Quick
    Réponses: 5
    Dernier message: 18/01/2012, 13h01
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

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