在 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 中设置一些东西,但还没有发现任何有用的东西。
最佳答案
GtkEventBox
通过创建一个新的 X 窗口来接收事件。默认情况下,它使用输入/输出窗口。调用 gtk_event_box_set_visible_window
使窗口不可见(并且仅供输入。)
关于c++ - 如何为 GtkEventBox 提供透明背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272450/