c++ - 在函数调用时将 GTK 子窗口小部件添加到主窗口

标签 c++ c widget gtk

我正在尝试在我的 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 newTabview 定义为 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/

相关文章:

c - 检测断开的客户端套接字连接(跨平台适用性)

c# - 在 Internet Explorer 7 中看不到小部件

C++:如果输入不是整数,为什么这段代码会运行无限循环?

c++ - 为什么当我使用 std::string::operator[] 时 auto 变量不会成为引用?

c++ - 是否可以存储迭代器?

c - libpcap : No Wireless Devices detected

c++ - 使用现代 OpenGL 进行 2D 渲染的正交投影

与c中的函数地址混淆

c - 通过唯一 ID 查找 glade gtk3 小部件

ios - 禁用 iOS 10 快速操作小部件