2013-02-19 3 views
0

나는 많은 스핀 버튼을 포함하는 최상위 창을 가지고 있습니다.GTK + 창에서 위젯 나열

실제로 사용자는 필요한 객체 수를 선택하고 버튼을 누른 후 응용 프로그램에서 어떤 조치를 취합니다.

보통 내가 gtk_builder_get_object에 의해 초기화 된 위젯을 conatains 구조체

typedef struct 
{ 
....... 
GtkWidget *widget; 
....... 
} _GUI; 

을 사용하고 있습니다(). 그 후에 나는 그들로부터 정보를 얻을 수있다.

하지만 여기서는 스핀 버튼이 많이 필요하며 속성 (예 : 민감한 옵션 설정 등)을 설정해야합니다.

그래서 최상위 창 (상자와 확장자도 있음)의 모든 위젯을 나열하고 그 유형 (GtkSpinButton, GtkWidget 등)으로 정렬 할 수 있습니까?

특정 스핀 버튼을 직접 가리 키지 않으려합니다.

답변

2

최상위 창 (GtkWindow)은 GtkContainer의 하위 클래스이므로 gtk_container_forall()을 사용하여 창 하위를 반복 할 수 있습니다.

각 하위에 대해 GObject의 API : (예 : G_OBJECT_TYPE() macro 매크로)를 사용하여 각 하위 유형을 파악할 수 있습니다. 창의 스핀 단추가 중첩 된 컨테이너에있는 경우 재귀해야 할 수도 있습니다.

+0

맞아, 고스트 위젯을 반복하는 것을 피하기 위해'gtk_container_foreach()'를 대신 사용하십시오. – ntd