断言在代码块失败,林间空地,GTK

问题描述 投票:0回答:1

我有在代码块在运行时的烦恼。它说:“(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;
}

它建立精细,它只是不会当我试图运行它运行。

c gtk glade
1个回答
1
投票

基本上有一个林间空地文件的两种格式: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;
}

样本程序没有完成,只有了解正确的方法来构建空地文件完整的程序和有关如何使用GTK库来构建GUI的,你可以参考http://programming-simplified.blogspot.com在C程序的详细信息

© www.soinside.com 2019 - 2024. All rights reserved.