Добавление дочернего виджета GTK в главное окно при вызове функции

0

Я пытаюсь добавить виджет GtkNotebook в свой виджет GtkWindow. Виджет окна создается в файле ui вместе с GtkBox.

myclass:: myclass()
{       
GtkBuilder *builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "uifile.ui", NULL);
gtk_builder_connect_signals (builder, NULL);
mainWindow = GTK_WIDGET (gtk_builder_get_object(builder, "mainWindow"));
box = GTK_BOX (gtk_builder_get_object(builder, "box1"));
gtk_widget_show_all (mainWindow);
}

У меня есть эта функция void newTab в myclass. И view определяется как просмотр GtkWidget *view.

void myclass:: newTab()
{
view = gtk_notebook_new();
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (view), GTK_POS_TOP);
gtk_box_pack_start(GTK_BOX (box),view, TRUE, TRUE, 0);
gtk_box_reorder_child (GTK_BOX (box), view, 1);
gtk_widget_show (view);
}

Но я вызываю segmentation fault когда я вызываю эту функцию. Разве это не правильный способ добавить виджет к моему mainWindow? Как это исправить?

Полный код myclass.h и файла myclass.cpp см. Здесь http://pastebin.com/tWTUKtZG

Теги:
widget
gtk

1 ответ

0

здесь я делаю это в python3, gtk3, который в основном тот же

class myclass ():
   def __init__ (self):   
      mainWindow = # construct from builder
      tab = self.newTab ()
      mainWindow.add (tab)

      mainWindow.show_all ()


   def newTab (self):
      view = Gtk.Notebook ()
      view.show ()
      return view

   # in C
   # GtkWidget* newTab ()
   # {
   #    view = Gtk.Notebook ()
   #    view.show ()
   #    return view
   # } 

возможно, вы добавили GtkWidget * view в mainWindow, прежде чем вы назовите void onTab()?, если вы это сделали, сделайте противоположное

  • 0
    На самом деле у меня есть пункт меню, который вызывает эту newTab() . И я добавляю это представление GtkWidget *view в этой функции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню