0
这是我使用glade文件构建菜单的Gtk + 2应用程序的代码。 但是,当我编译我的软件,它会生成以下错误:Gtk + 2 Glade运行时错误无法构建小部件
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 0x00007ffff6da9410 in g_log()from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #1 0x0000000000437fca in drgeoToolbar :: drgeoToolbar(this = 0xf3c010, view = <优化出来>)at drgeo_toolbar .cc:42' 这是使用gdb的回溯结果,在我做了你的建议后。它仍然坠毁。行号42是行 'g_warning(“无法加载生成器文件:%s”,错误 - >消息);' –
声音像xml文件不是你认为它的地方。作为一般性评论:代码中存在几个潜在问题......我建议您从尽可能最小的代码开始(如从文件创建构建器),并且只有在您完成所有错误处理后才添加新内容(包括返回在错误路径中)以及为该部分完成的测试。 – jku