In Gtk, come faccio a cercare un ListStore per la riga contenente un valore particolare?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Ho un ListStore modellare un elenco di Tags. Questo elenco può cambiare a parte il ListStore. Quello che mi piacerebbe fare è ascoltare l'evento TagRemoved nella mia classe TagList, e rimuovere il Tag dalla ListStore quando viene attivato l'evento. Tuttavia, non riesco a trovare un modo per cercare un ListStore per la riga contenente un dato Tag, in modo che possa rimuoverlo.

Esiste un modo per fare questo?

È stato utile?

Soluzione

A GtkListStore implementa l'interfaccia GtkTreeModel, che contiene le operazioni di attraversamento degli alberi che si desidera. Per quanto ne so, non v'è alcuna API convenienza per la ricerca di un negozio di lista / albero, quindi dovrete rotolare il proprio.

Dal momento che si sta semplicemente l'iterazione di un GtkListStore, è possibile ignorare tutte le API che fare con le relazioni figlio / genitore, e semplicemente utilizzare gtk_tree_model_iter_first() e gtk_tree_model_iter_next() per attraversare la lista.

In alternativa, se si conosce già l'indice del tag rimosso in negozio (ad esempio, dal vostro TagRemoved evento), è possibile trasformarla in un GtkTreePath e utilizzare gtk_tree_model_get_iter() per recuperare la riga in questione direttamente senza la ricerca.

Altri suggerimenti

GtkListStore è implementato internamente come un così si dovrebbe eseguire la scansione del modello da soli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top