我有在代码块在运行时的烦恼。它说:“(HelloWorld.exe的:3312):libglade的-CRITICAL **:glade_xml_relative_file:断言`文件名= NULL”失败”
我使用的格莱德和GTK同时建立一个UI我的项目,但我一直在努力了几天,我仍然无法弄清楚什么是错的?谢谢。
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
/*import glade file*/
xml = glade_xml_new("hello.glade", NULL, NULL);
/* get a widget (useful if you want to change something) */
widget = glade_xml_get_widget(xml, "mainWindow");
/* connect signal handlers */
glade_xml_signal_autoconnect(xml);
/*show widget*/
gtk_widget_show (widget);
gtk_main();
return 0;
}
它建立精细,它只是不会当我试图运行它运行。
基本上有一个林间空地文件的两种格式:1:libglade
,2:gtkBuilder
。
当我刚刚在做夏天的项目,我也面临着同样的问题。而是采用glade_xml_new()
使用gtk_builder_new()
,因为我觉得你的空地文件,如果gtkBuilder
类型的构建空地文件。
示例程序:
int main(int argc, char *argv[])
{
GtkBuilder *gtkBuilder;
GtkWidget *window;
gtk_init(&argc, &argv);
gtkBuilder = gtk_builder_new();
gtk_builder_add_from_file(gtkBuilder, "name of your glade file", NULL);/*this api is used to
build the glade file which is created by using glade(glade3) UI designer.*/
window = GTK_WIDGET( gtk_builder_get_object( gtkBuilder, "name of your window") );
gtk_builder_connect_signals( gtkBuilder, NULL ); /*connecting signals so that appropriate
handler can be called to handle the button clicked event*/
g_object_unref(G_OBJECT(gtkBuilder));
gtk_widget_show(window);
gtk_main(); /*it is basically a loop to make window appear. if we not write it then window
will appear but disappear after few seconds automatically.*/
return 0;
}
样本程序没有完成,只有了解正确的方法来构建空地文件完整的程序和有关如何使用GTK库来构建GUI的,你可以参考http://programming-simplified.blogspot.com在C程序的详细信息