В Gtk, как мне выполнить поиск в ListStore строки, содержащей определенное значение?

StackOverflow https://stackoverflow.com/questions/2214431

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Есть ли какой-нибудь способ сделать это?

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top