【问题标题】:In Gtk, how do I search a ListStore for the row containing a particular value?在 Gtk 中,如何在 ListStore 中搜索包含特定值的行?
【发布时间】:2010-02-06 19:37:17
【问题描述】:

我有一个ListStore 建模Tags 的列表。除了ListStore,此列表可能会发生变化。我想做的是在我的TagList 类中收听TagRemoved 事件,并在触发事件时从ListStore 中删除Tag。但是,我似乎找不到在 ListStore 中搜索包含给定 Tag 的行的方法,以便将其删除。

有什么办法吗?

【问题讨论】:

标签: c# gtk gtk# gtktreeview


【解决方案1】:

GtkListStore 实现了GtkTreeModel 接口,其中包含您想要的树遍历操作。据我所知,没有用于搜索列表/树存储的便捷 API,因此您必须自己动手。

由于您只是简单地迭代 GtkListStore,因此您可以忽略所有处理子/父关系的 API,而只需使用 gtk_tree_model_iter_first()gtk_tree_model_iter_next() 遍历列表。

或者,如果您已经知道商店中已删除标签的索引(例如,来自您的 TagRemoved 事件),您可以将其转换为 GtkTreePath 并使用 gtk_tree_model_get_iter() 直接检索有问题的行无需搜索。

【讨论】:

  • gtk_tree_model_iter_first 似乎不存在;我想你的意思是gtk_tree_model_get_iter_first
【解决方案2】:

GtkListStore 在内部实现为linked list,因此您应该自己扫描模型。

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2023-03-17
    • 2020-05-08
    • 2021-10-03
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多