Bonjour,
j'utilise les MVC pour la première fois et je crois bien que j'ai besoin de votre aide :-\.
J'utilise une QSqlRelationTableView.
J'ai créé un délégué pour modifier la façon dont sont éditées certaines données.
Je souhaiterais maintenant modifier la façon dont sont affichées certaines données.
Si j'ai bien compris ce que j'ai lu sur les MVC, contrairement à ce que je pensais au début, pour faire ça, il ne faut pas que je modifie la vue mais le modèle.
Dans les exemples que j'ai vu, la fonction data() est ré-implémentée et les coordonnées de l'index (ligne/colonne) combinées au flag Qt:isplayRole permettent de personnaliser l'affichage d'une case, d'une ligne ou d'une colonne.
En supposant que ce que je viens d'expliquer au dessus est correct, il y a un point sur lequel je bloque. Tous les exemples que j'ai vu alimentent le modèle en données à l'aide d'une variable dont le contenu a été défini par le programmeur pour illustrer l'exemple. Ici, c'est la variable mElements qui a été définie spécialement pour l'occasion :
Mais dans mon cas, le modèle est peuplé automatiquement lors de l'appel à select().
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
24 QVariant TableModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() < 0 || index.row() >= mElements.count()) { return QVariant(); } switch (role) { case Qt::DisplayRole: case Qt::EditRole: if (index.column() == Element) { return mElements[index.row()].first; } else if (index.column() == Value) { return mElements[index.row()].second; } break; } return QVariant(); }
Comment fais-je donc pour indiquer à data() quelle valeur elle doit retourner ? A quoi dois-je faire référence ?
Merci d'avance pour vos réponses en espérant que j'ai à peu prés saisi le concept des MVC...
Partager