我正在尝试在我的 GtkWindow
小部件中添加 GtkNotebook
小部件。窗口小部件与 GtkBox
一起在 ui 文件中创建。
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
。 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);
}
但是当我调用此函数时,我遇到了段错误
。
这不是将小部件添加到我的主窗口的正确方法吗?
我该如何纠正这个问题?
有关 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
# }
也许您在调用 void onTab () 之前将 GtkWidget *view 添加到了 mainWindow 中?如果您这样做了,请执行相反的操作
关于c++ - 在函数调用时将 GTK 子窗口小部件添加到主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24819735/