使用GMenu菜单中的巨大差距

时间:2019-08-08 11:03:47

标签: c linux gtk

使用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);
      }
   }

//.....
//....

Picture

1 个答案:

答案 0 :(得分:0)

不幸的是,它就是intended to be的样子。 您可以坚持使用已弃用的GtkImageMenuItem,直到将应用程序移植到GTK 4之前没有问题。如果您确实想避免使用已弃用的组件,则可以按照建议将图像+标签包装在GtkBox中根据文档,虽然它不是那么简单,但是需要一些怪癖才能得到一个体面的解决方案:

  1. 您需要在菜单上使用gtk_menu_set_reserve_toggle_size,并将其设置为FALSE
  2. 然后,您需要为每个菜单项创建标签和图像,但是对于没有图标的项,则需要创建将用作填充符的图像,即gtk_image_new_from_icon_name ("", GTK_ICON_SIZE_BUTTON)

您可以找到功能完善的示例here

注意:不能保证这将在GTK 4上正常运行。