Vous devez obtenir un GtkTreeIter
à la rangée appropriée, puis utiliser le setter approprié (spécifique au modèle) pour modifier les données.
Par exemple gtk_list_store_set()
pour le modèle GtkListStore.
Il n'est pas nécessaire d'effacer le modèle entier si vous voulez simplement modifier certaines données, ce qui est très coûteux et lent.
Si vous avez vraiment besoin de changer toutes les données, alors, effacez-les.
Vous n'avez pas à vous préoccuper de l'actualisation de l'affichage; la vue écoute les événements du modèle et sait automatiquement se rafraîchir lorsque le modèle change.
MISE À JOUR:
Lors de la modification des données (comme décrit dans obtenir des commentaires), vous ne avez pas besoin de « vider » les anciennes données. Le modèle possède les données et sait comment garder la trace de la mémoire utilisée. Vous utilisez simplement l'appel gtk_list_store_set()
mentionné ci-dessus pour mettre les nouvelles données souhaitées dans le modèle. Vous pouvez le faire aussi souvent que nécessaire, et une fréquence de mise à jour de toutes les quelques secondes ne devrait poser aucun problème. Bien sûr, dans un tel cas, pour garder votre application (ce que je suppose être à un seul thread, pour plus de simplicité), vous devez avoir un moyen de déclencher de manière asynchrone une mise à jour, peut-être en utilisant un timer. Jetez un oeil à la fonction g_timeout_add()
de glib pour apprendre à ajouter une minuterie globale simple.
ahhh, bon à savoir, merci pour votre aide se détendre – paultop6
im me demandant si vous pouvez m'aider à se détendre. Le problème im ayant essaie de placer dans les nouvelles données. Je dois vider et remplacer les données toutes les quelques secondes. Je suis inquiet im va avoir une fonction qui est constamment en boucle, rinçage et placer de nouvelles données. Comment est-il possible de vider les données des colonnes et de les remplacer après avoir appelé gtk_main? – paultop6
@ paultop6: J'ai essayé de mettre à jour la réponse pour résoudre ces problèmes. – unwind