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 :

[QTableView] Changement de couleur d'une cellule conditionnellement


Sujet :

Qt

  1. #1
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut [QTableView] Changement de couleur d'une cellule conditionnellement
    Bonjour tout est dans le titre
    Quelqu un aurait une piste pour changer la couleur de fond d'une cellule dans la colonne 1 d un QTABLEVIEW si le nombre que il contient est supérieur à 50?
    Je ne sais pas du tout ou chercher
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  2. #2
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    C est cool j ai trouvé
    En fait Qt utilise un principe Vue Modèle mais associé à un Délégué
    Je vous mets un bout de code plus tard pour expliquer ca si ca vous intéresse
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    Bonjour,

    Il n'est pas nécessaire d'utiliser un délégué pour changer la couleur d'une cellule.
    Les rôle Qt::BackgroundRole ainsi que Qt::ForegroundRole permettent de personnaliser les couleurs de fonds et du texte directement depuis le modèle.

    Petit exemple vite fait:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    QVariant MyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
    {
        if(!index.isValid() || index.row() < 0 || index.row() >= m_list.size())
            return QVariant();
     
        switch(index.column()){
        case COL_1: //Column 1    
            switch(role){
            case Qt::DisplayRole:
                 return m_list.at(index.row());
            case Qt::BackgroundRole:
                if(m_list.at(index.row) > 50)
                    return QColor(Qt::red);
            case Qt::ForegroundRole:
                if(m_list.at(index.row) > 50)
                    return QColor(Qt::white);
            }    
        case COL_2:
        ...
        }
     
        return QVariant();  
    }

  4. #4
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Bonjour et merci pour cette réponse
    C est vrai que c est plus simple
    Mais juste pour ma culture quand doit on utiliser un délégué ?
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    Pour ma part j'utilise les délégués quand je n'ai pas d'autre choix. C-à-d lorsque la personnalisation par le modèle n'est pas suffisante et qu'un widget personnalisé est nécessaire.
    Par exemple pour afficher une barre de progression dans une cellule.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    Pour votre culture , voici un petit projet test que j'avais fait et qui utilise un délégué pour affiché une barre de progression dans une colonne spécifique. C'est un peu hors sujet mais peut être que cela vous sera utile un jour.

    Fichiers intéressants:
    - ProgressBarItemDelegate.h/.cpp
    - Widget.cpp, ligne 41-44:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ui->tableView->setModel(taskFutureModel);
        ui->tableView->setItemDelegateForColumn(TaskFutureModel::COL_PROGRESS, new ProgressBarItemDelegate(ui->tableView));
    Fichiers attachés Fichiers attachés

  7. #7
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Merci :-)
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

Discussions similaires

  1. [XL-2010] Lancer une fonction lors du changement de couleur d'une cellule
    Par Contrec dans le forum Excel
    Réponses: 13
    Dernier message: 09/06/2011, 13h34
  2. [MySQL] Changement de couleur d'une cellule en fonction d'une requete
    Par freko dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/07/2008, 16h56
  3. Changement de couleur d'une cellule html actionné par radio?
    Par Patatebio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2007, 20h25
  4. changement de couleur d'une cellule avec onmouseover
    Par poitierjohan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/10/2007, 19h00
  5. Réponses: 5
    Dernier message: 11/07/2007, 12h15

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