繁体   English   中英

GtkEventBox 将信号连接到 Glade 中的 GAction

[英]GtkEventBox connect signal to GAction in Glade

我正在尝试通过 Glade 将 GtkEventBox 的enter-notify-event连接到附加的 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"/>

完整的 UI 文件

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

因此,恐怕您将不得不继续手动连接您的活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM