添加小部件时更新Gtk容器

时间:2011-10-23 19:42:08

标签: c user-interface gtk

在初始构建UI之后,我有一些代码用一些数据中的新小部件填充GtkVBox。

所以有些代码稍后会运行,如下所示:

gchar* str = "something or other";
ascii_labels [i] = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (ascii_labels [i]), str);

ascii_event_boxes [i] = gtk_event_box_new ();

gtk_container_add (GTK_CONTAINER (ascii_event_boxes [i]),
                   ascii_labels [i]);

gtk_box_pack_start (GTK_BOX (ascii_box),
                    ascii_event_boxes [i],
                    FALSE, FALSE, 0);

在某个循环中。稍后我有

gtk_widget_show_all (ascii_box);

设置可见性。这似乎有效,因为当我使用GtkParasite运行生成的应用程序时,我可以看到小部件在Widget树中正确嵌套并且它们被设置为可见。

不幸的是,它们实际上并没有出现在应用程序的窗口中!我认为我错过某种“请自行更新”的原因是,如果我从GtkParasite工具切换其中一个小部件的可见性,那么所有其他缺少的小部件都会神奇地出现!

谁能告诉我我错过了什么?

1 个答案:

答案 0 :(得分:1)

包装看起来不错,但我们需要知道ascii_labels包含什么,以及它是如何定义的。问题不在于可见性,因为gtk_widget_show_all会为您解决这个问题。