c++ - 如何为 GtkEventBox 提供透明背景?

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

最佳答案

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

关于c++ - 如何为 GtkEventBox 提供透明背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272450/

相关文章:

c++ - 将 GLSL 函数转换为 Metal

c++ - 如何在我们重建之前销毁布局 Qt C++

c - 使用 af_packet 从数据包中获取接口(interface)名称

php - 模式匹配后显示输出

python - 在pygtk中隐藏窗口标题栏

c++ - 悬停 Gtk::Image 时更改光标

c - 保持用户环境变量执行 gksu

c++ - 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入了错误值

c++ - 在 Eclipse CDT 中禁用自动头文件重命名

javascript - 在 node.js 中捕获 tshark stdout 输出