我有一个ListStore
建模Tag
s列表。该列表可能会与ListStore
分开。我想要做的是收听我的TagList
类中的TagRemoved
事件,并在事件触发时从ListStore
中删除Tag
。但是,我似乎无法找到一种方法来搜索ListStore
包含给定Tag
的行,以便我可以将其删除。在Gtk中,如何在包含特定值的行中搜索ListStore?
有没有办法做到这一点?
我有一个ListStore
建模Tag
s列表。该列表可能会与ListStore
分开。我想要做的是收听我的TagList
类中的TagRemoved
事件,并在事件触发时从ListStore
中删除Tag
。但是,我似乎无法找到一种方法来搜索ListStore
包含给定Tag
的行,以便我可以将其删除。在Gtk中,如何在包含特定值的行中搜索ListStore?
有没有办法做到这一点?
A GtkListStore
实现了GtkTreeModel
接口,该接口包含所需的树遍历操作。据我所知,没有便利的API搜索列表/树存储,所以你必须推出自己的。
由于您只是遍历GtkListStore
,因此您可以忽略处理子/父关系的所有API,并且只需使用gtk_tree_model_iter_first()
和gtk_tree_model_iter_next()
来遍历列表。
或者,如果你已经知道了删除标记的索引的存储设备(例如,从TagRemoved
事件),你可以把它转换成一个GtkTreePath
和使用gtk_tree_model_get_iter()
检索有关该行的情况下直接搜索。
GtkListStore在内部实现为linked list,所以您应该自己扫描模型。