在初始构建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工具切换其中一个小部件的可见性,那么所有其他缺少的小部件都会神奇地出现!
谁能告诉我我错过了什么?
答案 0 :(得分:1)
包装看起来不错,但我们需要知道ascii_labels
包含什么,以及它是如何定义的。问题不在于可见性,因为gtk_widget_show_all
会为您解决这个问题。