Gtk + 2 Glade运行时错误无法构建小部件

时间:2014-06-12 19:31:09

标签: gtk runtime-error glade

这是我使用glade文件构建菜单的Gtk + 2应用程序的代码。 但是当我编译我的软件时,会产生以下错误:

  

Gtk-CRITICAL **:IA__gtk_builder_get_object:断言GTK_IS_BUILDER (builder)' failed Gtk-CRITICAL **: IA__gtk_widget_show: assertion GTK_IS_WIDGET(小部件)'失败

drgeoToolbar::drgeoToolbar (geoView *view):
drgeoControl (view)
{
  GError* error = NULL;
  GtkBuilder *xml = gtk_builder_new ();
  GtkWidget *w;

  // Build the toolbars

  // take a reference of each bar item so we can :
  // . adjust their sensitivity
  // . attach a referecence of this class instance


  if (!gtk_builder_add_from_file (xml, DRGEO_GLADEDIR "/drgeo2.glade", &error))
  {
    g_warning ("Couldn't load builder file: %s", error->message);
    g_error_free (error);
  }
  setTopControlerWidget (xml);

  fetchWidgetParent (xml,&p_toolbar, "menuBar",
         (gpointer) this);
  fetchWidgetParent (xml,&p_zoomEntry, "zoomEntry",
         (gpointer) this);
  gtk_entry_set_text (GTK_ENTRY (p_zoomEntry), "100%");
  gtk_builder_connect_signals (xml, &error);
  g_object_unref (G_OBJECT (xml));


  /* short cut bar */

  setShortcutControlerWidget (xml);
  fetchWidgetParent (xml,&p_shortcutBar, "shortcutBar",
         (gpointer) this);
  gtk_builder_connect_signals (xml, &error);
  g_object_unref (G_OBJECT (xml));



  gtk_builder_connect_signals (xml, &error);
  setPointControlerWidget (xml);
  fetchWidgetParent (xml,&p_pointBar, "pointBar", 
         (gpointer) this);
  w = GTK_WIDGET (gtk_builder_get_object(xml, "toolbar"));
  gtk_toolbar_set_tooltips (GTK_TOOLBAR (w), true);
  g_object_unref (G_OBJECT (xml));

  gtk_builder_connect_signals (xml, &error);
  setCurveControlerWidget (xml);
  fetchWidgetParent (xml,&p_curveBar, "curveBar",
         (gpointer) this);
  g_object_unref (G_OBJECT (xml));

  gtk_builder_connect_signals (xml, &error);
  setTransformationControlerWidget (xml);
  fetchWidgetParent (xml,&p_transformationBar, 
         "transformationBar",
         (gpointer) this);
  g_object_unref (G_OBJECT (xml));

  gtk_builder_connect_signals (xml, &error);
  setNumericControlerWidget (xml);
  fetchWidgetParent (xml,&p_numericBar, "numericBar",
         (gpointer) this);
  g_object_unref (G_OBJECT (xml));

  gtk_builder_connect_signals (xml, &error);
  setMacroControlerWidget (xml);
  fetchWidgetParent (xml,&p_macroBar, "macroBar",
         (gpointer) this);
  g_object_unref (G_OBJECT (xml));

  gtk_builder_connect_signals (xml, &error);
  setOtherControlerWidget (xml);
  fetchWidgetParent (xml,&p_otherBar, "otherBar",
         (gpointer) this);
  g_object_unref (G_OBJECT (xml));

} 

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

查看第一条错误消息。您可以在构建器上调用g_object_unref()(甚至多次),然后继续使用构建器。

删除除最后一次不接听的电话之外的所有电话。同样适合那些gtk_builder_connect_signals()次来电。