В Gtk, как мне найти ListStore для строки, содержащей определенное значение? - PullRequest
2 голосов
/ 06 февраля 2010

У меня есть ListStore, моделирующий список Tag с. Этот список может меняться кроме ListStore. Я хотел бы прослушать событие TagRemoved в моем классе TagList и удалить Tag из ListStore при его запуске. Тем не менее, я не могу найти способ найти в ListStore строку, содержащую данный Tag, чтобы я мог удалить его.

Есть ли способ сделать это?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2010

A GtkListStore реализует интерфейс GtkTreeModel, который содержит необходимые операции обхода дерева. Насколько я знаю, нет удобного API для поиска в списке / дереве хранилища, поэтому вам придется свернуть свой собственный.

Поскольку вы просто перебираете GtkListStore, вы можете игнорировать все API, относящиеся к дочерним / родительским отношениям, и просто использовать gtk_tree_model_iter_first() и gtk_tree_model_iter_next() для обхода списка.

В качестве альтернативы, если вы уже знаете индекс удаленного тега в хранилище (например, из вашего события TagRemoved), вы можете превратить его в GtkTreePath и использовать gtk_tree_model_get_iter() для непосредственного извлечения рассматриваемой строки без поиска.

1 голос
/ 06 февраля 2010

GtkListStore внутренне реализован в виде связного списка , поэтому вы должны отсканировать модель самостоятельно.

...