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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.