1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| /*Cette partie du code est détaillée à l'extrême, il est sûrement possible de la "compacter" très fortement */
/* Je veux accéder à la cellule 5,2 de la vue,
* je demande donc au modèle de me fournir le QModelIndex correspondant à la cellule indiquée
*/
auto index = leModel->index(5,2); // C++11 inside : index est de type QModelIndex
/* Maintenant que j'ai l'index de la cellule qui m'intéresse,
* je peux demander les informations qui se rattachent à cette
* cellule particuliere.
* Par exemple, je peux demander les informations d'affichage (QDisplayRole,
* ce qui est la valeur par défaut du deuxième paramètre attendu par la fontion
* data() )
*/
auto data = model->data(index); // C++11 inside : data est de type QVariant
/* data est de type QVariant, ce qui permet de renoyer "n'importe quel type de donnée"
* mais ce QVariant contient une chaine de caractères QString, vu que c'est ce qui est utilisé
* pour l'affichage. Je peux donc effectuer la conversion sous une forme proche de
*/
auto string = data.toString(); //C++11 inside : string est de type QString
/* string correspond exactement à la valeur du texte que l'on retrouve dans la cellule 5,2!!!
* Mais, peut-être veux tu connaitre la couleur de fond de cette cellule? Rien de plus simple:
* le rôle qui t'intéresse ici est Qt::BackgroundRole
*/
auto bgColor = leModel->data(index, Qt::BackgroundRole); //C++11 inside bgColor est de type QVariant
/* Idem que pour data Vs string : bgColor est de type QVariant, mais, en interne, il contient une donnée de type QColor
* on peut donc récupérer la donnée d'origine
*/
auto color = bgColor.toColor(); // c++inside color est de type QColor
/* color correspond exactement à la couleur utilisée pour le fond de la cellule 5,2 |
Partager