2017-08-12 30 views
0

毎秒gtkのテーブルの内容が更新されますが、しばらくしてから、テーブルの内容はマウスがテーブル上を移動するまで変更されません。テーブルの変更量はbuf変数で、これは時間の種類です。gtk_list_store_set関数を呼び出すとツリービューで行が更新されない

store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_circuit)); 

    gtk_tree_model_foreach(GTK_TREE_MODEL(store), 
          (GtkTreeModelForeachFunc) foreach_func, 
          &rr_list); 
    if (rr_list != NULL) 
    { 
     GtkTreePath *path; 

     path = gtk_tree_row_reference_get_path((GtkTreeRowReference*) rr_list->data); 

     if (path) 
     { 
      GtkTreeIter iter; 

      if (gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) 
      { 
       char buf[10]; 
       format_sec_time(buf, ci->circuit_age); 
       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 
            COL_ID, ci->circ_id, 
            COL_PURPOSE, purpose[ci->purpose], 
            COL_STATE, states[ci->state], 
            COL_CREATION_TIME, ci->creation_time, 
            COL_TIMER, buf, 
            -1); 
      } 
     } 
    } 
    else 
    { 
     AddTreeViewCircuit(ci); 
    } 

    g_list_foreach(rr_list, (GFunc) gtk_tree_row_reference_free, NULL); 
    g_list_free(rr_list); 
} 

答えて

0

クレームを確認するには、さらにコードが必要です。回避策として、更新後にツリービューを強制的に再描画することができます。

追加:

gtk_widget_queue_draw(GTK_WIDGET(treeview_circuit)); 

gtk_list_store_set後。

関連する問題