首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GtkOverlay不传递输入事件

GtkOverlay不传递输入事件
EN

Stack Overflow用户
提问于 2016-12-20 20:02:25
回答 1查看 877关注 0票数 6

GtkOverlay小部件有一个特殊的set_overlay_pass_through方法将输入传递到底层覆盖。我想使用这个特性在UI上覆盖一个GtkDrawingArea来添加绘图。不幸的是,它对我不起作用,没有输入事件通过。

我在使用msys2gtkmm

这是我的密码:

代码语言:javascript
复制
Gtk::DrawingArea drawingArea;
Gtk::Fixed nodeBox; //filled with several widgets
Gtk::Overlay overlay;
overlay.add_overlay(nodeBox);
overlay.add_overlay(drawingArea);
overlay.set_overlay_pass_through(drawingArea,true);
window.add(overlay);

当我更改两个add_overlay调用的顺序时,输入事件正常工作,但是nodeBox的小部件隐藏了绘图区域。

EN

回答 1

Stack Overflow用户

发布于 2017-03-14 11:24:12

DrawingArea捕获事件,因为它有Gdk::窗口

其他的比较

这是一组缺少物理窗口的实用工具小部件的抽象。它们在定义的空间内有对齐和填充。 如果没有窗口,这种类型的小部件就无法捕获事件。

要使set_overlay_pass_through工作,您需要使用标签箭头图像或手动设置Gdk::Window来传递事件:

代码语言:javascript
复制
overlay.set_overlay_pass_through(drawingArea,true);
drawingArea.signal_realize().connect([&]
{
    auto gdkWindow = drawingArea.get_window();
    gdkWindow->set_pass_through(true);
});

注意,您仍然需要调用set_overlay_pass_through,并且小部件必须是已实现

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41250382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档