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 :

Checkbox & QTreeView


Sujet :

Qt

  1. #1
    Membre éclairé
    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
    Points : 704
    Points
    704
    Par défaut Checkbox & QTreeView
    Bonjour à tous !

    Comme le laisse supposer le titre de ce topic, j'essaie de manipuler des checkboxes avec dans des QTreeView... J'ai vu plusieurs manières d'y parvenir, et j'en ai trouvée une, qui me paraît relativement simple (mais cela reste à prouver !)...

    En gros, je parcours mon arbre, à partir du model () (de la classe QAbstractItemView) et sur chaque item (QStandardItem) je fais un setCheckable ()... et ça marche ! Mon QTreeView qui auparavant ne contenait pas de checkbox, laisse apparaître les petites boites !

    Et alors ? Me direz-vous... J'y viens !

    En fait, dans mon application je jongle entre plusieurs onglets d'un QTabWidget.
    Un onglet doit afficher mon QTreeView normalement (sans checkboxes) et un autre onglet doit afficher le même QTreeView mais avec les checkboxes. Pour cela j'utilise en fait deux QTreeView différents mais un seul QStandardItemModel.

    Le soucis est qu'une fois apparues, mes checkboxes ne veulent plus partir quand je reviens sur mon onglet sans checkboxes !!! (Même avec mes appels à setCheckable () sur les QStandardItem).

    Auriez-vous une petite idée de comment je pourrais m'en sortir ?

    Merci d'avance !

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Je serais tenté de te recommander l'utilisation d'une classe dérivant de QItemDelegate pour le QTreeView ne devant pas présenter les checkbox

  3. #3
    Membre éclairé
    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
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Salut,

    Je serais tenté de te recommander l'utilisation d'une classe dérivant de QItemDelegate pour le QTreeView ne devant pas présenter les checkbox
    Mmm... D'après ce que j'ai compris des QItemDelegate, c'est qu'ils servent à redéfinir le look des items (à changer les formes / positions / emplacement des éléments). Moi je cherche justement à ne pas les afficher !

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Justement
    Tu peux dériver de QItemDelegate, et réimplémenter drawCheck pour ne rien dessiner AMHA.

  5. #5
    Membre éclairé
    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
    Points : 704
    Points
    704
    Par défaut
    Euh, en fait si je ne met rien dans drawCheck, au premier affichage (affichage sans checkbox) tout va bien. Si je clique l'onglet avec les checkboxes elles s'affichent bien, mais si je reviens sur le premier onglet, alors, certes, elles deviennent invisible, mais elles laissent un "trou" entre le texte et les tirets de gauche de l'arborescence...

    Je pense donc m'en sortir en déclarant tous mes items avec checkbox (je ne les affichais auparavant que lors du changement d'onglet) et en décalant le texte des items quand il n'y a pas de checkbox... (avec la fonction drawDisplay)

    Si quelqu'un a une solution peut-être plus "propre" je suis preneur...

  6. #6
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Oui il y a plus propre: réimplémenter QItemDelegate::sizeHint.
    (Tu as juste à reprendre le code de QItemDelegate::sizeHint et virer ce qui concerne le checkState).

Discussions similaires

  1. QTreeView, Models & Checkboxes
    Par Fabllot dans le forum Qt
    Réponses: 3
    Dernier message: 03/06/2008, 13h55
  2. Couleur d'un CheckBox
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/07/2002, 14h48
  3. CheckBox en Read Only
    Par MrJéjé dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/06/2002, 15h00

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