如何给 GtkEventBox 一个透明背景?
Posted
技术标签:
【中文标题】如何给 GtkEventBox 一个透明背景?【英文标题】:How Do I Give a GtkEventBox a Transparent Background? 【发布时间】:2011-06-07 22:42:55 【问题描述】:在 GTK 对话框中,我有一个 GtkLabel 包装在 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 中设置一些东西,但还没有发现任何有用的东西。
【问题讨论】:
我认为GTK+ 3修复了背景颜色变化的问题。 【参考方案1】:GtkEventBox
通过创建一个新的 X 窗口来接收事件。默认情况下,它使用输入/输出窗口。调用gtk_event_box_set_visible_window
使窗口不可见(并且只能输入。)
【讨论】:
见my question。你有什么想法?问题是,如果您使窗口不可见,则将鼠标悬停在标签上时将无法更改光标。有什么解决方法吗?以上是关于如何给 GtkEventBox 一个透明背景?的主要内容,如果未能解决你的问题,请参考以下文章