我有ListStore
建模Tag
的列表。此列表可能会与ListStore
区分开来。我想要做的是在我的TagRemoved
课程中收听TagList
事件,并在触发事件时从Tag
移除ListStore
。但是,我似乎无法找到一种方法来搜索ListStore
包含给定Tag
的行,以便我可以删除它。
有没有办法做到这一点?
答案 0 :(得分:4)
GtkListStore
实现GtkTreeModel
接口,其中包含您想要的树遍历操作。据我所知,搜索列表/树存储没有便利API,所以你必须自己动手。
由于您只是在GtkListStore
上进行迭代,因此您可以忽略处理子/父关系的所有API,只需使用gtk_tree_model_iter_first()
和gtk_tree_model_iter_next()
来遍历列表。
或者,如果您已经知道商店中已删除标记的索引(例如,来自您的TagRemoved
事件),则可以将其转换为GtkTreePath
并使用gtk_tree_model_get_iter()
直接检索有问题的行而不进行搜索。
答案 1 :(得分:1)
GtkListStore在内部实现为linked list,因此您应该自己扫描模型。