首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gnome-builder找不到我的glade文件

gnome-builder找不到我的glade文件
EN

Stack Overflow用户
提问于 2017-08-26 17:57:21
回答 1查看 1.5K关注 0票数 4

我尝试使用gnome-builder编写GUI程序,并尝试使用Glade进行布局。我在Programmer's Notes上做了一个教程。

C

代码语言:javascript
复制
#include <gtk/gtk.h>

int main(int argc, char *argv[]){


    GError          *err = NULL;
    GtkBuilder      *builder;
    GtkWidget       *window;

    gtk_init(&argc, &argv);

    builder = gtk_builder_new();
    gtk_builder_add_from_file (builder, "window_main.ui", &err);

    if (err != NULL) {
        fprintf (stderr, "Unable to read file: %s\n", err->message);
        g_error_free(err);
        return 1;
    }

    window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));

    if (window == NULL || !GTK_IS_WINDOW(window)) {
        fprintf (stderr, "Unable to get window. (window == NULL || window != GtkWindow)\n");
        return 1;
    }

    gtk_builder_connect_signals(builder, NULL);

    g_object_unref(builder);

    gtk_widget_show(window);
    gtk_main();

    return 0;
}

void on_window_main_destroy(GtkWidget *widget, gpointer user_data){
    gtk_main_quit();
}

林间空地

代码语言:javascript
复制
<?xml version=1.0 encoding="UFT-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
    <requires lib="gtk+" version="3.12"/>
    <object class="GtkWindow" id="window_main">
        <property name="can_focus">False</property>
        <property name="title" translatable="yes">Test Window</property>
        <property name="default_width">640</property>
        <property name="default_height">480</property>
        <signal name="destroy" handler="on_window_main_destroy" swapped="no"/>
        <child>
            <placeholder/>
     </child>
    </object>
</interface>

与.c文件一样,.glade文件位于src/方向。当我运行代码时,下面的错误消息返回Unable to read file: Failed to open file “./window_main.ui”: No such file or directory我不知道我应该把glade文件放在哪里,因为当我用gcc main.c -Wall 'pkg-config --cflags --libs gtk+-3.0' -export-dynamic编译我自己并用./a.out运行它时,窗口打开时没有任何错误。

EN

回答 1

Stack Overflow用户

发布于 2017-12-26 13:27:29

正如TingPing在评论区提到的,最好的方法是将其包含在GResource中。在您的示例中,资源规范XML将如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/main">
    <file>window_main.ui</file>
  </gresource>
</gresources>

然后用gtk_builder_new_from_resource()加载资源,比如

代码语言:javascript
复制
GtkBuilder *builder = gtk_builder_new_from_resource("/main/window_main.ui");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45894154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档