Bonjour,
À partir d'un QAbstractListModel (cf mon précédent topic), j'émets le signal dataChanged() avec les paramètres qui vont bien, et ça fonctionne: le contenu de ma vue est bien mis à jour.
Mais seulement le contenu, pas la couleur. En effet, si je fais dépendre la couleur d'un état de mon objet, alors celle-ci est bien calculée au début, mais si cet état change, elle n'est jamais mise à jour.
Voici une simplification (pour n'en garder que l'essentiel) de l'itemDelegate de ma TableView en QML:
1 2 3 4 5 6 7 8 9 10
| TableView {
model: myModel
itemDelegate: Text {
text: debug("value", styleData.value)
color: debug("color", myModel.getMyBooleanState(styleData.row) ? 'blue' : 'red')
}
//
} |
Voici ma fonction debug() qui me sert juste à savoir quand la propriété est mise à jour:
1 2 3 4
| function debug(tag, value) {
console.log(tag + ": " + value)
return value
} |
getMyBooleanState() est une fonction membre de mon modèle, qui retourne un état (booléen) pour chaque row:
Q_INVOKABLE bool getMyBooleanState(int rowIndex) const;
Au démarrage, le texte et la couleur sont bien initialisés correctement.
Mais à chaque fois que dataChanged() est appelé, seule la valeur est mise à jour, pas la couleur.
Comment puis-je mettre à jour la couleur également?
Merci de votre aide.
Partager