GTK+ を使用するのはかなり新しいので、そのすべての機能を完全には認識していません。
基本的に、4 つの列を持つ GtkTreeView ウィジェットがあります。4 列に表示されるテキストを数秒ごとに更新する必要がありますが、GTK+ でこれを行う方法がわかりません。
gtk_tree_store_clear を使用してデータをフラッシュできることは承知していますが、列を再作成し、最上位のウィンドウを更新してこの新しいデータを表示する方法がわかりません。
適切な行を取得してGtkTreeIter
から、適切な (モデル固有の) セッターを使用してデータを変更する必要があります。
たとえばgtk_list_store_set()
、GtkListStore モデルの場合。
データの一部を変更したいだけであれば、モデル全体をクリアする必要はありません。これは非常に無駄が多く、時間がかかります。
本当にすべてのデータを変更する必要がある場合は、必ずクリアしてください。
ディスプレイのリフレッシュについて心配する必要はありません。ビューはモデルからのイベントをリッスンし、モデルが変更されたときに更新することを自動的に認識します。
アップデート:
(コメントで説明されているように) データを変更する場合、古いデータを「フラッシュ」する必要はありません。モデルはデータを所有し、使用されたメモリを追跡する方法を知っています。必要に応じて上記のgtk_list_store_set()
呼び出しを使用して、新しい目的のデータをモデルに配置します。これは必要に応じて何度でも実行できます。更新頻度は数秒に 1 回で問題ありません。
もちろん、そのような場合、アプリケーション (簡単にするためにシングルスレッドであると仮定します) の応答性を維持するには、おそらくタイマーを使用して、更新を非同期にトリガーする方法が必要です。g_timeout_add()
シンプルなグローバル タイマーを追加する方法については、glib の関数を参照してください。