Введение:
Есть готовый интерфейс gtk+ реализованный си кодом, необходимо добавить функциональности интерфейсу. Вообщем нужно добавить пару другую вкладок в notebook. Так как я страшно ленив я сделаю это в glade, но не хочется переделывать старый интерфейс.
Вопрос:
Как добавить вкладок в notebook без лишнего кодописательства, а только лишь подключив готовый интерфейс, созданный в glade?
Например я делал так:
GtkBuilder *gtkBuilder;
GtkWidget *mainwin;
gtkBuilder = gtk_builder_new();
gtk_builder_add_from_file(gtkBuilder,"1.glade",NULL);
mainwin = GTK_WIDGET(gtk_builder_get_object(gtkBuilder,"vboxx"));
g_object_unref ( G_OBJECT(gtkBuilder) );
gtk_widget_show_all ( mainwin );
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), mainwin, 0);
vboxx - это контейнер, хранящий все остальные элементы управления и контейнеры.
вообщем выскакивает ошибка: Can't set a parent on widget which has a parent
не сказать, что неожиданная
Пользователь решил продолжить мысль 14 Октября 2011, 19:47:28:
Вообщем решил задачу:
GtkBuilder *gtkBuilder;
GtkWidget *uslesbook;
gtkBuilder = gtk_builder_new();
gtk_builder_add_from_file(gtkBuilder,"2.glade",NULL);
uslesbook = GTK_WIDGET(gtk_builder_get_object(gtkBuilder,"notebook1"));
box2 = GTK_WIDGET(gtk_builder_get_object(gtkBuilder,"vboxx1"));
gtk_widget_show_all ( box2 );
g_object_unref ( G_OBJECT(gtkBuilder) );
g_object_ref( box2 );
gtk_container_remove( GTK_CONTAINER( uslesbook ), box2);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), box2, 0);
Вкладка добавляется, несколько вкладок тоже ок