2017-12-19 21 views
1

2 개의 GtkLayouts를 GtkLayout에 넣으 려합니다. 그러나, 그것은 작동하지 않는 것 같습니다. 왜 그 사람이 누군지 압니까? 또는 gtk 구성 요소를 사용하는 데 몇 가지 제한이 있습니다.GtkLayout을 GtkLayout에 넣을 수 있습니까?

#include <gtk/gtk.h> 

int main(int argc, char *argv[]) 
{ 
GtkWidget *window, *main_container, *t, *p; 

gtk_init (&argc, &argv); 
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
gtk_window_set_title (GTK_WINDOW (window), "layout test"); 
gtk_window_maximize(GTK_WINDOW(window)); 
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK(gtk_main_quit), NULL); 
main_container = gtk_layout_new(NULL, NULL); 

GdkColor color; 
gdk_color_parse ("green", &color); 
gtk_widget_modify_bg(GTK_WIDGET(main_container), GTK_STATE_NORMAL, &color); 

gdk_color_parse ("red", &color); 
t = gtk_layout_new(NULL, NULL); 
gtk_layout_set_size(GTK_LAYOUT(t), 300, 300); 
gtk_widget_modify_bg(GTK_WIDGET(t), GTK_STATE_NORMAL, &color); 

gdk_color_parse ("yellow", &color); 
p = gtk_layout_new(NULL, NULL); 
gtk_layout_set_size(GTK_LAYOUT(p), 300, 300); 
gtk_widget_modify_bg(GTK_WIDGET(p), GTK_STATE_NORMAL, &color); 

gtk_layout_put(GTK_LAYOUT(main_container), t, 0, 0); 
gtk_layout_put(GTK_LAYOUT(main_container), p, 0, 300); 
gtk_container_add(GTK_CONTAINER(window), main_container); 

gtk_widget_show_all (window); 
gtk_main(); 
return 0; 
} 
+0

여기서 C++의 유일한 것은'using namespace std'입니다. 이것은 정말로 C 코드입니다. GTK +로 실제 C++을하고 싶다면 C++ 바인딩 인 GTKmm을 사용하십시오. – liberforce

답변

1

답변을 찾았습니다. 컨테이너가 다른 컨테이너에 추가되면 위젯으로 처리해야합니다. 따라서 gtk_layout_set_size 대신 gtk_widget_set_size_request를 사용하면이 문제가 해결됩니다.