Pergunta

eu tenho um ListStore Modelando uma lista de Tags. Esta lista pode mudar além do ListStore. O que eu gostaria de fazer é ouvir o TagRemoved evento no meu TagList classe e remova o Tag de ListStore Quando o evento é acionado. No entanto, não consigo encontrar uma maneira de pesquisar um ListStore para a linha que contém um dado Tag, para que eu possa removê -lo.

Há alguma maneira de fazer isso?

Foi útil?

Solução

UMA GtkListStore implementa o GtkTreeModel interface, que contém as operações de travessia de árvores que você deseja. Até onde eu sei, não há API de conveniência para pesquisar em uma lista/loja de árvores, então você terá que rolar o seu próprio.

Já que você está simplesmente iterando sobre um GtkListStore, você pode ignorar toda a API que lida com as relações com filhos/pais e simplesmente usar gtk_tree_model_iter_first() e gtk_tree_model_iter_next() Para atravessar a lista.

Como alternativa, se você já conhece o índice da tag removida na loja (por exemplo, do seu TagRemoved evento), você pode transformar isso em um GtkTreePath E use gtk_tree_model_get_iter() Para recuperar a linha em questão diretamente sem pesquisar.

Outras dicas

GTKListStore é implementado internamente como um Lista vinculada Então você deve escanear o modelo sozinho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top