0

GTK+ を使用するのはかなり新しいので、そのすべての機能を完全には認識していません。

基本的に、4 つの列を持つ GtkTreeView ウィジェットがあります。4 列に表示されるテキストを数秒ごとに更新する必要がありますが、GTK+ でこれを行う方法がわかりません。

gtk_tree_store_clear を使用してデータをフラッシュできることは承知していますが、列を再作成し、最上位のウィンドウを更新してこの新しいデータを表示する方法がわかりません。

4

1 に答える 1

1

適切な行を取得してGtkTreeIterから、適切な (モデル固有の) セッターを使用してデータを変更する必要があります。

たとえばgtk_list_store_set()、GtkListStore モデルの場合。

データの一部を変更したいだけであれば、モデル全体をクリアする必要はありません。これは非常に無駄が多く、時間がかかります。

本当にすべてのデータを変更する必要がある場合は、必ずクリアしてください。

ディスプレイのリフレッシュについて心配する必要はありません。ビューはモデルからのイベントをリッスンし、モデルが変更されたときに更新することを自動的に認識します。

アップデート:

(コメントで説明されているように) データを変更する場合、古いデータを「フラッシュ」する必要はありません。モデルはデータを所有し、使用されたメモリを追跡する方法を知っています。必要に応じて上記のgtk_list_store_set()呼び出しを使用して、新しい目的のデータをモデルに配置します。これは必要に応じて何度でも実行できます。更新頻度は数秒に 1 回で問題ありません。

もちろん、そのような場合、アプリケーション (簡単にするためにシングルスレッドであると仮定します) の応答性を維持するには、おそらくタイマーを使用して、更新を非同期にトリガーする方法が必要です。g_timeout_add()シンプルなグローバル タイマーを追加する方法については、glib の関数を参照してください。

于 2010-04-12T14:33:52.307 に答える