2010-04-12 6 views
0

GTK +를 사용하는 것에 초조함으로 모든 기능을 완전히 인식하지 못합니다.GTK + 위젯에 새로 고침 텍스트가 표시됩니까?

기본적으로 4 개의 열이있는 GtkTreeView 위젯이 있습니다. 4 초마다 표시되는 텍스트를 업데이트해야하지만 GTK +에서이 작업을 수행하는 방법을 알지 못합니다.

gtk_tree_store_clear를 사용하여 데이터를 플러시 할 수 있다는 것을 알고 있지만 열을 다시 채우고이 새 데이터를 표시하는 최상위 창을 새로 고치는 방법을 모르겠습니다.

답변

1

적절한 행에 GtkTreeIter을 가져온 다음 적절한 (모델 별) 설정기를 사용하여 데이터를 변경해야합니다.

예를 들어 GtkListStore 모델의 경우 gtk_list_store_set()입니다.

일부 데이터 만 변경하려는 경우 전체 모델을 지울 필요가 없습니다. 이는 매우 낭비적이고 느립니다.

정말로 모든 데이터를 변경해야한다면 분명히 삭제하십시오.

디스플레이가 새로 고침되는 것에 대해 걱정할 필요가 없습니다. 뷰는 모델의 이벤트를 수신하고 모델 변경시 새로 고침을 자동으로 인식합니다.

UPDATE :

(commment에 설명 된대로) 데이터를 변경, 당신은 이전 데이터를 "플러시"할 필요가 없습니다. 모델은 데이터를 소유하고 사용 된 메모리를 추적하는 방법을 알고 있습니다. 필요에 따라 위에서 언급 한 gtk_list_store_set() 호출을 사용하여 새 원하는 데이터를 모델에 넣을 수 있습니다. 필요한만큼 자주이 작업을 수행 할 수 있으며 몇 초에 한 번 업데이트 빈도를 전혀 문제가되지 않아야합니다.

물론, 이러한 경우에는 (간단히하기 위해 단일 스레드라고 가정) 응용 프로그램을 유지하려면 타이머를 사용하여 비동기 적으로 업데이트를 트리거하는 방법이 있어야합니다. 간단한 글로벌 타이머를 추가하는 방법을 배우려면 glib의 g_timeout_add() 함수를 살펴보십시오.

+0

아, 알다시피, 도와 주셔서 감사합니다. – paultop6

+0

인스턴트 메신저 궁금해하는 경우에 내가 도와 줄 수 있습니다. 문제는 새로운 데이터에 배치하려고하는 것입니다. 몇 초마다 데이터를 플러시하고 교체해야합니다. Im은 끊임없이 루핑되고 플러시되며 새로운 데이터를 배치하는 기능을 갖기를 바랬습니다. gtk_main을 호출 한 후 열에서 데이터를 플러시하고 바꾸는 방법은 무엇입니까? – paultop6

+0

@ paultop6 : 그 문제를 해결하기 위해 답을 업데이트 해 보았습니다. – unwind

관련 문제