如何为Gtk EventBox提供透明背景?

时间:2011-06-07 22:42:55

标签: c++ linux gtk

在GTK对话框中,我将GtkLabel包装在GtkEventBox中,以便它可以接收点击事件(导航到网页以获取更多信息)。功能上它很棒。

但是,当我将标签添加到事件框时,标签的背景不再是透明的 - 标签现在具有默认的窗口背景颜色。这对我来说不起作用,因为我的绘图窗口有一个背景位图,缺乏透明度使它看起来很傻。

当GtkLabel的背景添加到GtkEventBox时,我需要做些什么来保持透明?

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中设置一些东西,但还没有找到任何有用的东西。

1 个答案:

答案 0 :(得分:3)

GtkEventBox通过创建新的X窗口来接收事件。默认情况下,它使用输入/输出窗口。调用gtk_event_box_set_visible_window使窗口不可见(仅输入。)