c - Codeblocks、glade、gtk 中的断言失败

标签 c gtk glade

我在代码块运行时遇到问题。它说“(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:libglade2: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/

相关文章:

c++ - 使用VID,PID和SN查找USB端口号

c - 帮忙找c api

用glade编译一个简单的gtk程序

linux - 在 GNU/Linux 系统上,我应该从哪里加载应用程序数据?

c - 用于 RaceCondition 控制的 Pthreads 和 Mutexes

c - 在Arduino IDE中将浮点值转换为科学记数法的语法?

python - 如何在 GUI 中嵌入外部窗口(Python + Glade + Gtk3)

python - 如何在 pygtk 中获取 ms windows 桌面高度?

c++ - 来自 glade 文件的 gtkmm 构建器不起作用

c - 如何在编译内核模块时使用标志