c - 为什么行不通过调用 gtk_list_store_set 函数在 TreeView 中更新

标签 c gtk insert-update gtktreeview

每秒更新一次gtk中表格的内容,但一段时间后表格内容保持不变,直到鼠标在表格上移动。表中变化的量是buf变量,是时间类型。

    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);
}

最佳答案

它应该更新,需要更多代码来检查声明。作为解决方法,您可以强制 TreeView 在更新后重绘。

添加:

gtk_widget_queue_draw(GTK_WIDGET(treeview_circuit));

gtk_list_store_set之后。

关于c - 为什么行不通过调用 gtk_list_store_set 函数在 TreeView 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45650902/

相关文章:

c - 在 C 中 malloc'ing 多维数组

c - 计数排序中与内存相关的错误?

C-Array of Pointers 不同的索引方式

c - 如何从 gtk+2 中的输入法接收字符?

php - 使用 php 检查查询行数

json - MongoDB - 动态更新嵌套数组中的对象

在 C 中比较包含 IPv4 地址的字符串

不推荐使用Gtk.stock,还有什么选择?

linux - (Linux) 如何在没有显示环境的情况下运行gtk 程序? Gtk 警告 ** : cannot open display:

mysql - 如果它已经在表中,我如何强制 INSERT 插入到具有唯一键的表中?