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

Qt Discussion :

QTreeView, Models & Checkboxes


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut QTreeView, Models & Checkboxes
    Bonjour,

    Je sais que certains messages proche de celui-ci ont déjà été postés mais il y a vraiment un truc que je ne comprends pas...

    Ce que je souhaite faire est une représentation de mes données dans plusieurs arbres... Dont un doit afficher des checkboxes.

    J'ai donc créé un modèle (MyTreeModel) dérivé de QAbstractItemModel qui affiche correctement mes données dans un QTreeView.
    L'étape suivante est d'afficher dans un second QTreeView, les mêmes données mais avec des checkboxes pour chaque item.

    J'ai donc dérivé mon modèle MyTreeModel pour créer un modèle MyCheckableTreeModel qui redéfini uniquement la méthode "flags" de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Qt::ItemFlags MyCheckableTreeModel ::flags (const QModelIndex& index) const {
    	if (index.isValid ())
    		return MyTreeModel ::flags (index) | Qt::ItemIsUserCheckable;
    	return MyTreeModel ::flags (index);
    }
    Désormais, j'ai bien des checkboxes qui s'affichent mais en état "Qt:artiallyChecked" et quand je clique dessus, rien ne se passe...
    J'ai bien vu dans des forums qu'il fallait utiliser la méthode "setData" avec "Qt::CheckStateRole" pour donner la valeur de la checkbox mais je ne comprends pas où je dois appeler cette méthode...
    Surtout que la méthode demande en paramètre un "QModelIndex"... Cependant, hors de mon modèle je ne connais pas les valeurs des QModelIndex...

    De plus, je ne veux pas utiliser de QTreeWidget ni de QStandardItemModel & QStandardItem, puisqu'ils feront une copie de mes données, et je perdrais tout le bénéfice de mon modèle...

    Bref je suis un peu perdu...
    Est-ce que quelqu'un aurait quelques explications à ce sujet ? (J'espère avoir été assez clair...)

    Merci d'avance !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut. EN faite faut bien comprend à quoi sert role
    http://qt.developpez.com/doc/latest/...mDataRole-enum

    QVariant data ( const QModelIndex & index, int role = Qt:isplayRole ) const
    sert a récupérer l'information à utiliser suivant le role.

    Recupère le résultat d'une édition pour tel role
    bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )


    toi, il faut que tu t'intéresse au role Qt::CheckStateRole

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    voici un example que j'avais fait à partir de l'exemple simpletreemodel
    ce que j'ai rajouté est associé avec le commentaire : /*Nay*/
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Ok !

    Ce que je n'avais pas compris c'était comment l'action du clic sur une checkbox était relayé à mes structures de données... Effectivement il suffit de réimplémenter la méthode setData... Je ne pensais pas setData était appelée lors d'un changement d'état de la checkbox!
    Tout devient plus clair désormais !

    Merci de votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/02/2014, 10h12
  2. Réponses: 0
    Dernier message: 23/05/2012, 11h28
  3. Checkbox & QTreeView
    Par Fabllot dans le forum Qt
    Réponses: 5
    Dernier message: 17/04/2008, 11h40

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