c-如何使用GResource在Gtk3中加载图标



这是我的.gressource.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/readaratus/decoder">
<file alias="app_icon">icon192.png</file>
</gresource>
</gresources>

我写了这个代码来设置图标:

gtk_window_set_icon_from_file(GTK_WINDOW(ui.main_window),
"resource:///org/readaratus/decoder/app_icon",
NULL);

失败,并发出以下警告:

Gtk-WARNING **: Error loading icon from file 'resource:///org/readaratus/decoder/app_icon':
Failed to open file 'resource:///org/readaratus/decoder/app_icon': No such file or directory

但如果我查询资源捆绑包,它会报告一个3631字节的对象:

gsize size;
if(g_resources_get_info("/org/readaratus/decoder/app_icon",
G_RESOURCE_LOOKUP_FLAGS_NONE,
&size, NULL, NULL))
{
g_print("app_icon size: %ldn", size);
}

我的代码出了什么问题,如何从资源中加载图标?

GResource不是一个文件,而是与应用程序/库绑定的二进制资源。您应该只使用g_resource_*()方法或在资源中查找数据的特殊方法来访问它,如gtk_image_new_from_resourcegtk_builder_new_from_resourcegdk_pixbuf_new_from_resource

在您的情况下,您应该加载Gdkpixbuf并将其单独设置为图标。

GdkPixbuf *pixbuf;
pixbuf = gdk_pixbuf_new_from_resource ("/org/readaratus/decoder/app_icon", NULL);
gtk_window_set_icon (window, pixbuf);

旁注:如果您有多个尺寸的图标手绘,请使用gtk_window_set_icon_list((。然后将使用最佳尺寸。

相关内容

  • 没有找到相关文章

最新更新