En GTK, ¿Cómo se busca un ListStore para la fila que contiene un valor particular?
-
19-09-2019 - |
Pregunta
Tengo un ListStore
modelar una lista de Tag
s. Esta lista puede cambiar aparte de la ListStore
. Lo que me gustaría hacer es escuchar al evento TagRemoved
en mi clase TagList
, y retire la Tag
del ListStore
cuando se activa el evento. Sin embargo, me parece que no puede encontrar una manera de buscar un ListStore
para la fila que contiene una Tag
dado, para que pueda retirarla.
¿Hay alguna manera de hacer esto?
Solución
A GtkListStore
implementa la interfaz GtkTreeModel
, que contiene las operaciones de recorrido de árbol que desea. Por lo que yo sé, no hay ninguna API comodidad para buscar una tienda de lista / árbol, por lo que tendrá a liar.
Dado que usted es simplemente interactuando sobre una GtkListStore
, puede ignorar toda la API de abordar las relaciones hijo / padre, y simplemente usar gtk_tree_model_iter_first()
y gtk_tree_model_iter_next()
para recorrer la lista.
Como alternativa, si ya conoce el índice de la etiqueta eliminada en la tienda (por ejemplo, a partir de su evento TagRemoved
), se puede convertir eso en un GtkTreePath
y utilizar gtk_tree_model_get_iter()
para recuperar la fila en cuestión directamente sin tener que buscar.
Otros consejos
GtkListStore se implementa internamente como un ligado de manera usted debe escanear el modelo por sí mismo.