Frage

Als resonably neu mit GTK +, im nicht voll bewusst, alle seine Funktionalität.

Im Grunde genommen, ich habe einen GtkTreeView Widget, das 4 Spalten. Ich brauche der Text abgebildet in 4 Spalten alle paar Sekunden zu aktualisieren, aber im nicht bewusst, wie dies in GTK + zu tun.

Ich bin mir bewusst, dass ich die Daten mit gtk_tree_store_clear spülen könnte, aber ich bin nicht sicher, wie die Spalten neu zu besiedeln und das Top-Level-Fenster Refresh hat diese neuen Daten zu zeigen?

War es hilfreich?

Lösung

Sie benötigen einen GtkTreeIter in die richtige Reihe zu bekommen, dann verwenden Sie die entsprechende (modellabhängig) Setter die Daten zu ändern.

Zum Beispiel gtk_list_store_set() für das GtkListStore Modell.

Es gibt keine Notwendigkeit, das gesamte Modell zu löschen, wenn Sie nur einen Teil der Daten ändern möchten, dass sehr verschwenderisch ist und langsam.

Wenn Sie wirklich alle Daten ändern müssen, dann sicher, deaktivieren Sie es.

Sie haben keine Sorgen zu machen über die Anzeige zu aktualisieren bekommen; die Ansicht Streams aus dem Modell zu Veranstaltungen und automatisch aktualisiert weiß, wann sich das Modell ändert.

UPDATE:

Wenn Sie die Daten zu ändern (wie in commment beschrieben), haben Sie die alten Daten zu „flush“ nicht benötigen. Das Modell besitzt die Daten, und weiß, wie man verwendet Spur des Speichers zu halten. Sie verwenden nur die oben erwähnte gtk_list_store_set() Ruf als notwendig, um die neuen gewünschten Daten im Modell zu setzen. Sie können wie nötig dies so oft tun, und eine Aktualisierungsfrequenz von einmal alle paar Sekunden sollte kein Problem sein.

Natürlich in einem solchen Fall Ihre Anwendung zu halten (was ich davon ausgehen, ist single-threaded, der Einfachheit halber), die, müssen Sie einen Weg, um asynchron ein Update auslösen, vielleicht mit Hilfe einer Zeitschaltuhr. Werfen Sie einen Blick auf glib der g_timeout_add() Funktion zu lernen, wie man ein einfaches globales Timer hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top