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
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.
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.
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(); }
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.
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.
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));
Merci :-)
KatanaEnMousse
Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager