2010-04-29 10 views
0
vbox = gtk_vbox_new(FALSE, 0); 
gtk_container_add(GTK_CONTAINER(window), vbox); 
... 
frame = gtk_fixed_new(); 
gtk_container_add(GTK_CONTAINER(window), frame); 
... 

위의 코드는 아래의 경고를 생성합니다gtk 코드는 어떻게 작동합니까?

은 Gtk-WARNING ** : 수있는 GtkWindow에 GtkFixed 유형의 위젯을 추가하려고하지만, GtkBin로 GtkWindow를 서브 클래스 만 한 번에 하나의 위젯 포함; 이미 frame 결과

이 창에 표시되지 않은 타입는 GtkVBox의 위젯을 포함하고 있습니다.

어떻게 vboxframe을 모두 표시 할 수 있습니까?

답변

1

(당신이 수직으로 쌓아하려는 경우, 즉) 주변 vbox에 모두 담아 :

parentVbox = gtk_vbox_new(FALSE, 0); 

vbox = gtk_vbox_new(FALSE, 0); 
gtk_box_pack_start(GTK_BOX(parentVbox), vbox, TRUE, TRUE, 0); 
... 
frame = gtk_fixed_new(); 
gtk_box_pack_start(GTK_BOX(parentVbox), frame, TRUE, 0); 
... 
gtk_container_add(GTK_CONTAINER(window), parentVbox); 
+0

가 나는 이유는 모르겠지만, 나는'GTK_BOX''에 GTK_VBOX'을 변경 후에 만 ​​작동, 그것은 오타인가? – Gtker

+0

@Runner : 예, 그렇습니다. 감사! – unwind

0

을 모든 위젯이 하나의 위젯을 포함 할 수 있습니다 때문에 발생하는 오류이다 (당신이 원하는 중 VBOX 및 창에 포함될 프레임)을 포함 할 수 있습니다. 포함 된 위젯은 포함 된 여러 위젯과 함께 복잡한 위젯 일 수 있습니다.

위젯을 상자 안에 넣으려면 gtk_box_pack_start()를 사용해야합니다. 그놈 참조 설명서 링크 : http://library.gnome.org/devel/gtk/stable/GtkBox.html#gtk-box-pack-start

vbox = gtk_vbox_new(FALSE, 0); 
frame = gtk_fixed_new(); 
gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); //the frame goes inside vbox 
... 
gtk_container_add(GTK_CONTAINER(window), vbox); //the vbox is contained by window 
+0

GtkBox에서 파생 된 위젯은 다양한 위젯을 관리 할 수 ​​있습니다. –

+0

적절한 코드를 작성하려면 어떻게해야합니까? gtk에 익숙하지 않습니다. – Gtker

관련 문제