是否可以将GtkLayouts放入GtkLayout?

时间:2017-12-19 03:36:22

标签: c layout gtk

我想将2 GtkLayouts放入GtkLayout。但是,它似乎不起作用。谁知道为什么?或者,使用gtk组件有一些限制。

#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;
}

1 个答案:

答案 0 :(得分:2)

我找到了答案。如果容器被附加到另一个容器中,则应将其视为窗口小部件。因此,使用gtk_widget_set_size_request代替gtk_layout_set_size将解决此问题。