Я пытаюсь добавить виджет 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
здесь я делаю это в 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()?, если вы это сделали, сделайте противоположное
newTab()
. И я добавляю это представлениеGtkWidget *view
в этой функции.