2012-01-24 18 views
5

的Gtk菜單這是我運行時創建的菜單的重要組成部分:帶圖標

GtkWidget *menu, *menu_item; 
menu = gtk_menu_new(); 

menu_item = gtk_image_menu_item_new_with_label("Uredi..."); 

//approach1 - icon don't work 
//gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), gtk_image_new_from_stock(GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU)); 

//approach2 - icon also don't work 
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), GTK_WIDGET(gtk_image_new_from_stock(GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU))); 

gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); 
g_signal_connect(G_OBJECT(menu_item), "button-release-event", G_CALLBACK(menu_RELEASE), (gpointer)""); 

gtk_menu_attach_to_widget(GTK_MENU(menu), button, NULL); 
gtk_widget_show_all(menu); 

菜單工程確定,但這是唯一一個「imagemenuitem」上,我看到的標籤,但看不到圖像。 這裏有什麼可能是錯誤的?

Gtk2的視覺,Ubuntu的11.10

回答

4

我不是100%肯定,但我相信,在菜單和按鈕圖標,默認情況下不再啓用。你需要打開它們讓它們出現。

gconftool-2 --type bool --set /desktop/gnome/interface/menus_have_icons true 

或者使用dconf

dconf write /org/gnome/desktop/interface/menus-have-icons true 
+0

感謝名單肖恩。看起來你是對的。但是,建議的解決方案不適合我。我也試着用gconf-editor沒有結果。 –

+0

此設置現在由dconf控制,因爲Gnome桌面已經從gconf轉換而來。我不記得設置的名稱,目前無法檢查它,但它應該放在'org.gnome.desktop'的某處。 – ptomato

+0

Thanx西紅柿。我用org.gnome.desktop.interface下的dconf-editor找到它。在那裏,我檢查了「按鈕有圖標」和「菜單有圖標」,但仍然沒有菜單上的圖像。 –

4

嘿很老的問題,所以也許沒有太大的用處。但我遇到了一個菜單沒有顯示圖像的非常類似的問題(在我的情況下,它是由按鈕觸發的彈出式菜單)。

我解決它調用

gtk_image_menu_item_set_always_show_image(menu_item,TRUE); 

這解決了我的問題,順便現在我的照片總是顯示:d活泉:)至於傳入1(真)意味着它會一直顯示。

編號: http://developer.gnome.org/gtk3/3.0/GtkImageMenuItem.html

+0

不要使用'1',這是['gboolean'](https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean)-type參數,所以使用['TRUE '](https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS)。 – unwind