2010-02-06 2 views
2

나는 의 목록을 모델링하는 ListStore을 가지고 있습니다. 이 목록은 ListStore과 다를 수 있습니다. 내가하고 싶은 일은 클래스에있는 TagRemoved 이벤트를 듣고 이벤트가 트리거되면 ListStore에서 Tag을 제거하십시오. 그러나, 내가 Tag을 포함하는 행에 대해 ListStore을 검색하는 방법을 찾을 수 없으므로이를 제거 할 수 없습니다.Gtk에서 특정 값을 포함하는 행에 대해 ListStore를 검색하려면 어떻게해야합니까?

이렇게 할 방법이 있습니까?

답변

3

GtkListStore은 원하는 트리 트래버 설 동작을 포함하는 GtkTreeModel 인터페이스를 구현합니다. 지금까지 내가 아는 한 목록/트리 저장소를 검색하기위한 편의 API는 없으므로 직접 가져와야합니다.

당신은 단순히 GtkListStore 반복하고 있기 때문에, 당신은 자녀/부모 관계를 다루는 API를 모두 무시하고 단순히 목록을 통과 할 gtk_tree_model_iter_first()gtk_tree_model_iter_next()를 사용할 수 있습니다. 이미 저장소에 삭제 된 태그의 인덱스를 알고있는 경우

또는, (예를 들어, 당신의 TagRemoved 이벤트에서), 당신은 GtkTreePath에 그 전원을 켜고 직접 검색하지 않고 문제의 행을 검색 할 gtk_tree_model_get_iter()를 사용할 수 있습니다.

0

GtkListStore는 내부적으로 linked list으로 구현되어 있으므로 모델을 직접 스캔해야합니다.