使用 GMenu (Gnome/Gtk) 创建菜单时,菜单项的标签(-> 图片)之间存在巨大间隙。有什么想法如何解决这个问题吗?
#include <gio/gio.h>
#include <glib.h>
#include <glib-object.h>
#include <glib/gi18n.h>
//....
//....
if(title && (action || submenu))
{
GMenuItem *item;
if(submenu)
{
item = g_menu_item_new_submenu (title, G_MENU_MODEL(submenu));
}
else
{
item = g_menu_item_new(title, action);
if (icon != NULL)
{
g_menu_item_set_attribute (item, "icon", "s", icon);
}
}
//.....
//....
最佳答案
不幸的是,事情就是这样intended to be 。
您可以坚持使用已弃用的 GtkImageMenuItem
,除非您将应用程序移植到 GTK 4,否则这不是问题。如果您确实想避免弃用的组件,可以将图像 + 标签包装在 GtkBox 中
正如文档所建议的,虽然它不是那么简单,但需要一些怪癖才能获得像样的解决方案:
- 您需要在菜单上使用
gtk_menu_set_reserve_toggle_size
并将其设置为FALSE
。 - 然后,您需要为每个菜单项创建标签和图像,但是对于没有图标的项目,需要创建一个充当填充物的图像,即
gtk_image_new_from_icon_name ("", GTK_ICON_SIZE_BUTTON)
您可以找到完整工作的示例 here .
注意:不能保证这能在 GTK 4 上正常工作。
关于c - 使用 GMenu 的菜单中的大间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57411101/