Un point manque encore dans l'interface : quand un nouveau livre est créé, sa ligne doit
être sélectionnée dans le tableau. Autrement, si l'utilisateur effectue de nouvelles
modifications et clique sur Sauvegarder… une nouvelle ligne sera créée. Cependant,
cette opération ne peut pas s'effectuer au niveau du bouton : le modèle vient à peine
d'être modifié, la vue n'a pas encore eu le temps de l'être (elle ne le sera qu'après
l'exécution de la fonction modifiant le modèle). Pour contourner ce problème, le
gestionnaire de signal onRowCountChanged() de TableView vient à la rescousse : il
est appelé dès que le nombre de lignes de la vue a changé, c'est-à-dire pile-poil au
moment intéressant. À cet instant, la sélection est déplacée vers le dernier élément,
celui qui vient d'être ajouté.
onRowCountChanged: {
selection.clear();
if (rowCount > 0) {
selection.select(rowCount - 1);
}
}
Note > La condition rowCount > 0 est nécessaire dans le cas où l'on supprime le dernier
élément de la liste : il ne reste plus aucun élément, impossible d'en sélectionner un.
Sans cette condition, Qt Quick affiche une erreur dans la console (même si
l'application fonctionne normalement).
351
être sélectionnée dans le tableau. Autrement, si l'utilisateur effectue de nouvelles
modifications et clique sur Sauvegarder… une nouvelle ligne sera créée. Cependant,
cette opération ne peut pas s'effectuer au niveau du bouton : le modèle vient à peine
d'être modifié, la vue n'a pas encore eu le temps de l'être (elle ne le sera qu'après
l'exécution de la fonction modifiant le modèle). Pour contourner ce problème, le
gestionnaire de signal onRowCountChanged() de TableView vient à la rescousse : il
est appelé dès que le nombre de lignes de la vue a changé, c'est-à-dire pile-poil au
moment intéressant. À cet instant, la sélection est déplacée vers le dernier élément,
celui qui vient d'être ajouté.
onRowCountChanged: {
selection.clear();
if (rowCount > 0) {
selection.select(rowCount - 1);
}
}
Note > La condition rowCount > 0 est nécessaire dans le cas où l'on supprime le dernier
élément de la liste : il ne reste plus aucun élément, impossible d'en sélectionner un.
Sans cette condition, Qt Quick affiche une erreur dans la console (même si
l'application fonctionne normalement).
351
