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 :

changer couleur item d'un QTreeView


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 14
    Points
    14
    Par défaut changer couleur item d'un QTreeView
    Salut tout le monde,

    J'ai actuellement un soucis, j'essaie de donner certaines couleurs aux noeuds de mon QtreeView (aux textes, plus précisément), mais je n'y arrive pas.
    J'ai utilisé la fonction paint dans le delegate pour changer la police du texte, mais je n'arrive pas à changer la couleur. J'ai aussi tenter d'utiliser Brush ou un Pen d'un QPainter mais c'est le petit plus à côté du noeud qui devient de couleur différente.
    Voila, je bloque à présent, donc si quelqu'un a une idée, je prends...

    Merciiii.

  2. #2
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Tu as essayé avec la QPalette ou les stylesheets?


    Avec les stylesheets : http://qt.developpez.com/doc/4.5/sty...zing-qtreeview
    Un clavier Azerty en vaut deux.

  3. #3
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Si c'est juste pour changer la couleur des éléments de ton arbre, il faut travailler directement avec eux (les objets que tu ajoutes dans ton arbre). Ils ont héritent de QWidget et ont donc possibilité de changer de police et de palette.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    J'ai réussi a changer la couleur du texte de l'arbre mais en entier avec les stylesheet, mais ce que je veux c'est simplement changer quelques item définis.
    J'ai essayer avec setObjectName et l'option ::item#name_widget mais cela ne change rien. C'est soit tout soit rien
    Auriez vous une solution autre?

  5. #5
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Citation Envoyé par YoniBlond Voir le message
    Si c'est juste pour changer la couleur des éléments de ton arbre, il faut travailler directement avec eux (les objets que tu ajoutes dans ton arbre). Ils ont héritent de QWidget et ont donc possibilité de changer de police et de palette.
    De quelle manière ajoute-tu des éléments dans ton arbre ? Lors de l'ajout (ou même à n'importe quel moment), tu peux modifier les propriétés de ces éléments et donc leur police, couleurs etc.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par YoniBlond Voir le message
    De quelle manière ajoute-tu des éléments dans ton arbre ? Lors de l'ajout (ou même à n'importe quel moment), tu peux modifier les propriétés de ces éléments et donc leur police, couleurs etc.
    Je suis débutant en Qt mais de ce que j'ai compris, ils sont ajoutés avec model->data() qui j'ai réimplémentée.
    celui ci renvoie un Qstring ou un Qvariant.
    Si je renvoie autre chose, est ceque cela s'affichera bien dans l'interface?
    Et surtout qu'est ce que je pourrais lui renvoyer comme type qui prenne du texte et de la couleur?
    Par exemple au lieu de lui renvoyer test en Qstring, je lui renvoie text en rouge d'un autre type. Donc est ce possible et surtout affichable.

    Merci

  7. #7
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Autant pour moi, je n'ai jamais utilisé le MVC avec Qt, je ne pensais qu'il y avait tant de différence. Avec un QTreeWidget, on ajoute à la main des QTreeWidgetItem et on peut les configurer au niveau police, couleur etc.

    Avec un QTreeView par contre je ne sais pas à quel niveau ça se passe. Il faut peut être réimplémenter la fonction ajoutant des éléments dans ton arbre.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Merci quand meme, par contre je viens de regarder dans la doc de QTreeWidgetItem, je ne vois pas comment tu fais pour modifier le texte.
    Je pourrais peut être m'en inspirer.
    De mon côté, j'arrive a changer la taille de la police d'un noeud grâce à la fonction paint de QItemDelegate. Celui ci utilise un QStyleOptionViewItem (donc un QFont) ainsi qu'un QPainter. Savez vous si je peux aussi changer le couleur avec ces paramètres? Je cherche mais je ne trouve pas.

    Merci

  9. #9
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Pour le QTreeWidgetItem tu as ces fonctions (entre autre) :
    void setFont ( int column, const QFont & font )
    void setForeground ( int column, const QBrush & brush )
    void setBackground ( int column, const QBrush & brush )
    void setIcon ( int column, const QIcon & icon )

    Dans ton cas tu dois pouvoir utiliser le QPainter pour configurer les couleurs etc, je viens de voir cette fonction sur QPainter :
    http://qt.developpez.com/doc/4.5/qpainter/#setbrush
    (sachant que le constructeur de QBrush admet un QColor entre autre).

    Regarde donc dans la classe de QPainter, il y a vraiment beaucoup de choses configurables pour que tu puisses personnaliser l'affichage de ton texte.
    Et n'hésite pas à mettre ton code quand tu auras trouver la solution

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    J'ai trouvé la solution.
    Je travaille dans "paint" (redéfinie) de QitemDelegate. A chaque fois que l'on intéragit avec l'arbre QTreeView, la fonction est appelée ainsi que la première fois qu'il est construit.
    La fonction demande ces paramètres (QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ).
    Quand on change le QBrush du Qpainter, c'est la couleur du petit carré avec le + qui est changée et non la couleur du texte. Il faut aller chercher en fait, la Qpalette de QStyleOptionViewItem.

    Ce qui fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void MyTreeDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
    {
    // Called whenever the view needs to repaint an item
     
        if(condition pour la sélection de l'item à repeindre) ){
            QStyleOptionViewItem myOption = option;
            myOption.palette.setColor(QPalette::Normal, QPalette::Text,Qt::blue);
            myOption.font.setBold(true);//met en gras
            QItemDelegate::paint( painter, myOption, index );
        }else{
            QItemDelegate::paint( painter, option, index );
        }
    }
    Merci pour l'aide

    En ligne

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Une balise code ( # ) et c'est parfait.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

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

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 06h54
  2. changer couleur element liste selectionné
    Par titicurio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/09/2005, 20h59
  3. changer couleur du lien au passage de la sourie
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/08/2005, 10h11
  4. [FLASH MX2004] Changer couleur de la ProgressBar ????
    Par Geilgestorm dans le forum Flash
    Réponses: 2
    Dernier message: 25/10/2004, 17h57
  5. changer couleur d'une "case" selon clique
    Par Jéjé2reims dans le forum MFC
    Réponses: 4
    Dernier message: 05/02/2004, 12h19

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