我正试图通过Glade将enter-notify-event的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"/>(完整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,如推荐的out行中的代码,效果很好。当查看EventBox时,这个动作也会出现在检查器中。
任何帮助都是非常感谢的:)
发布于 2019-01-10 12:25:36
我不认为你能做到。GtkActionable仅用于具有明确的用户激活操作的小部件,如按钮或菜单项。特别是,GtkEventBox没有实现它。
即使是这样,这个接口也只能管理每个类的一个事件,激活操作,而不是您感兴趣的enter-notify-event。
所以,恐怕你必须继续手动连接你的事件。
https://stackoverflow.com/questions/54125491
复制相似问题