2011-06-07 61 views
1

在GTK對話框中,我將GtkLabel包裝在GtkEventBox中,以便它可以接收點擊事件(導航到網頁以獲取更多信息)。在功能上它很好。如何爲GtkEventBox提供透明背景?

但是,當我將標籤添加到事件框中時,標籤的背景不再透明 - 標籤現在具有默認的窗口背景色。這對我來說不起作用,因爲我正在繪製的窗口有一個背景位圖,缺乏透明度使它看起來很愚蠢。

當GtkLabel的背景添加到GtkEventBox時,我需要做些什麼來保持GtkLabel的背景透明?

GdkColor color; 
gdk_color_parse("blue", &color); 
GtkStyle* linkstyle = gtk_style_new(); 
linkstyle->fg[GTK_STATE_NORMAL] = color; 
GtkWidget* learnmorebox = gtk_event_box_new(); 
GtkWidget* learnmore = gtk_label_new("More Info"); 
gtk_widget_set_style(GTK_WIDGET(learnmore), GTK_STYLE(linkstyle)); 
gtk_container_add(GTK_CONTAINER(learnmorebox), learnmore); 
gtk_widget_set_events(learnmorebox, GDK_BUTTON_PRESS_MASK); 
g_signal_connect(G_OBJECT(learnmorebox), "button_press_event", G_CALLBACK(learn_more), NULL); 

我懷疑有什麼東西我可以在設定的GtkStyle,但沒有發現任何有用的東西呢。

+0

我認爲背景顏色變化的問題在GTK + 3中是固定的。 – 2017-02-18 13:24:44

回答

3

GtkEventBox通過創建一個新的X窗口來接收事件。默認情況下,它使用輸入/輸出窗口。調用gtk_event_box_set_visible_window使窗口不可見(僅輸入)

+0

好的音符!謝謝。 – saeedgnu 2011-10-12 11:03:04

+0

請參閱[我的問題](http://stackoverflow.com/q/13767239/912144)。你有什麼想法?問題是,如果你使窗口不可見,那麼當你懸停在標籤上時你不能改變光標。任何解決方法? – Shahbaz 2012-12-10 14:52:56