如何修改GTK Tree View的内容?是否需重建视图或更换模型?
回答GTK Tree View内容修改的问题
嘿,完全不需要重新创建Tree View对象!这是两种更高效合理的做法:
直接更新现有模型(优先推荐)
如果你只是修改现有数据、添加/删除行,直接操作原来的GtkTreeModel(比如GtkListStore或者GtkTreeStore)就够了。GTK的Tree View会自动监听模型的变化,自动刷新显示内容,不用额外调用刷新方法。比如你可以用gtk_list_store_set()修改某一行的字段值,或者用gtk_list_store_append()添加新行——做完这些,Tree View会立刻同步更新。用
gtk_tree_view_set_model()替换模型
如果你的新数据结构和原模型差异很大,或者不想在原模型上改动,直接调用gtk_tree_view_set_model(tree_view, new_model)就能把Tree View绑定到新模型上。记得如果旧模型没有其他地方引用,最好调用g_object_unref(old_model)释放内存,避免泄漏。
为什么不重建Tree View呢?因为重建会丢失你之前给Tree View设置的所有配置:比如列的渲染器、排序规则、选择事件回调、自定义样式等等,完全是做无用功,既麻烦又影响性能。
内容的提问来源于stack exchange,提问作者Cyanide
相关产品推荐
相关产品推荐

