这是我使用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));
}
任何想法如何解决这个问题?
答案 0 :(得分:1)
查看第一条错误消息。您可以在构建器上调用g_object_unref()
(甚至多次),然后继续使用构建器。
删除除最后一次不接听的电话之外的所有电话。同样适合那些gtk_builder_connect_signals()
次来电。