2011-06-07 64 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