使用 GMenu 的菜单中存在很大差距
Big gaps in Menu using GMenu
使用 GMenu (Gnome/Gtk) 创建菜单时,菜单项的标签 (-> Picture) 留下了巨大的空白。有什么想法可以解决这个问题吗?
#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
不幸的是,事情就是这样 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 上正常工作。
使用 GMenu (Gnome/Gtk) 创建菜单时,菜单项的标签 (-> Picture) 留下了巨大的空白。有什么想法可以解决这个问题吗?
#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
不幸的是,事情就是这样 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 上正常工作。