rust - GtkEventBox 将信号连接到 Glade 中的 GAction
问题描述
我正在尝试enter-notify-event
通过 Glade 将 GtkEventBox 连接到附加的 GAction。使用 GtkInspector 检查正在运行的应用程序显示没有任何连接到enter-notify-event
信号。
我正在关注这篇博客文章,其中指出:
您还可以通过 .ui 文件设置属性。当您将点击事件处理程序替换为操作时,您可以真正简化您的代码库。
所以我认为这应该是可能的。它只提到了 GtkButton 的单击处理程序,但我不明白为什么它应该与其他信号不同。
林间空地:
检查员:
<object class="GtkEventBox" id="service_row">
<property name="visible">True</property>
<property name="can_focus">False</property>
<signal name="enter-notify-event" handler="test.show-arrow" swapped="no"/>
let actions = SimpleActionGroup::new();
let show_arrow = SimpleAction::new("show-arrow", None);
actions.add_action(&show_arrow);
show_arrow.connect_activate(move |_action, _data| {
println!("enter row2");
});
row.insert_action_group("test", &actions);
// row.connect_enter_notify_event(move |_widget, _crossing| {
// actions.activate_action("show-arrow", None);
// Inhibit(false)
// });
通过推荐行中的代码手动激活 GAction 就可以了。当查看 EventBox 时,该操作也会显示在 Inspector 中。
任何帮助是极大的赞赏 :)
解决方案
我不认为你能做到这一点。GtkActionable
仅适用于具有明确用户激活操作的小部件,例如按钮或菜单项。特别GtkEventBox
是没有实现它。
即使这样做了,这个接口也只会管理每个类的一个事件,即激活操作,而不是enter-notify-event
您感兴趣的。
因此,恐怕您将不得不继续手动连接您的活动。
推荐阅读
- autodesk-forge - CreateBucket 内部服务器错误“有效字段 'bucketKey' 必须采用 [-_.a-z0-9]{3,128} 形式”
- html - 为什么 div 标签将错误的 div 标签作为其结束标签?
- unity3d - 在 Unity3d 中的 HDRP 上使用镜头光晕
- azure - 部署到 Azure CDN 的 Azure 静态网站具有返回 404 的静态块文件
- reactjs - 如何将图像预加载到 react-dropzone 中?
- qt - qml中的滑块x和y位置
- javascript - 当变体的色样悬停在 Shopify 上时,如何显示变体图像?
- android - 在 ondestroy 中清除 CompositeDisposible?
- bash - 有没有更快的方法在另一个文件中查找一个文件的内容?
- c# - Unity Line Renderer 不会跟随光线投射?