GtkToolButton具有自定义图标,但具有库存图标大小

GtkToolButton具有自定义图标,但具有库存图标大小,gtk,icons,toolbar,Gtk,Icons,Toolbar,我有一个GtkToolBar,它有3个GTKToolbutton,每个按钮都有一个股票图标值,因此它们的大小都相同;现在,我添加了第四个带有自定义图像(.png)的GtkToolButton,它是任意尺寸的,只有这个按钮看起来很大(因为图像的资源更高)。如何缩放此GtkToolButton以匹配其他3个按钮 下面是我介绍的代码: GtkWidget *custom_icon = gtk_image_new_from_file(path); GtkToolItem *toolbar_item =

我有一个GtkToolBar,它有3个GTKToolbutton,每个按钮都有一个股票图标值,因此它们的大小都相同;现在,我添加了第四个带有自定义图像(.png)的GtkToolButton,它是任意尺寸的,只有这个按钮看起来很大(因为图像的资源更高)。如何缩放此GtkToolButton以匹配其他3个按钮

下面是我介绍的代码:

GtkWidget *custom_icon = gtk_image_new_from_file(path);
GtkToolItem *toolbar_item = gtk_toggle_tool_button_new();
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolbar_item), custom_icon);
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolbar_item), "Custom Item");
gtk_toolbar_insert(toolbar, toolbar_item, -1);

我自己发现的!这里有个诀窍,这样可以帮助像我这样的人。从stock菜单项查询图标大小,该菜单项是一个枚举(标准值,如
GTK_图标大小_按钮
GTK_图标大小_大工具栏
,等等)。现在使用gtk_图标_大小_查找获得像素大小。从具有正确尺寸的自定义图标/图像文件创建pixbuf。从中创建一个
GtkImage
,并将其设置为新菜单项,您就完成了

GtkToolItem*stock_菜单_item=gtk_切换_工具_按钮_new_from_stock(gtk_stock_new);
GtkIconSize工具栏图标大小=gtk工具项目获取图标大小(库存菜单项目);
基特宽度=0,高度=0;
gtk图标大小查找(工具栏图标大小、宽度和高度);
GdkPixbuf*app_icon=gdk_pixbuf_new_from_file_在_大小(icon_file_路径、宽度、高度、空值);
GtkImage*托盘图标=gtk\U图像\U新图片\U来自\U pixbuf(应用程序图标);
g_object_unref(应用程序图标);
应用程序图标=空;
GtkToolItem*工具栏项目=gtk切换工具按钮新();
gtk_工具按钮设置图标小部件(gtk_工具按钮(工具栏项)、托盘图标);

这里是另一个解决方案

GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(icon_file_path, NULL);
int width, height;
gdk_pixbuf_get_file_info (icon_file_path, &width, &height);
gtk_icon_theme_add_builtin_icon ("custom_icon", width, pixbuf);
g_object_unref (G_OBJECT (pixbuf)); 

GtkToolItem *toolbar_item = gtk_toggle_tool_button_new();
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON(toolbar_item), "custom_icon");
如果您有不同大小的图像,您可以将它们全部添加,并让Gtk选择一个正确的大小(或调整大小,如果找不到):只需为每个图像文件重复前五行

您可以在其他任何地方使用图标,其大小也将自动调整。 例如,要将其用于主窗口,请执行以下操作:

gtk_window_set_icon_name(GTK_WINDOW(main_window), "custom_icon");