我在代码块运行时遇到问题。它说“(HelloWorld.exe:3312):libglade-CRITICAL **:glade_xml_relative_file:断言 `文件名!= NULL'失败”
我同时使用 Glade 和 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;
}
它构建得很好,只是当我尝试运行它时它无法运行。
最佳答案
glade 文件基本上有两种格式: 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;
}
示例程序并不完整,只是为了了解构建glade文件的正确方法 完整的程序以及有关如何使用 gtk 库在 c 中编程来构建 GUI 的更多信息,您可以引用 http://programming-simplified.blogspot.com
关于c - Codeblocks、glade、gtk 中的断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22530831/