У меня есть некоторый код, который заполняет 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, я вижу, что виджеты правильно вложены в дерево виджетов, и они установлены как видимые.
К сожалению, они на самом деле не появляются в окне приложения! Причина, по которой я думаю, что мне не хватает какого-то вызова «обновите себя, пожалуйста», заключается в том, что если я переключаю видимость одного из этих виджетов из инструмента GtkParasite, все остальные виджеты, которые отсутствовали волшебным образом, появляются!
Может кто-нибудь сказать мне, что мне не хватает?