Rust GtkEventBox将信号连接到Glade中的GAction

Rust GtkEventBox将信号连接到Glade中的GAction,rust,gtk,glade,Rust,Gtk,Glade,我正试图通过Glade将GtkEventBox的enter notify event连接到附加的GAAction。使用GTKINSTECT检查正在运行的应用程序时,不会显示任何与enter notify event信号相关的内容 以下是我的观点: 您还可以通过.ui文件设置属性。当您用操作替换单击事件处理程序时,您可以真正简化代码库 所以我认为这应该是可能的。它只提到了GTK按钮的点击处理程序,但我不明白为什么它与其他信号不同 林间空地: 检查员: <object class="GtkE

我正试图通过Glade将GtkEventBox的
enter notify event
连接到附加的GAAction。使用GTKINSTECT检查正在运行的应用程序时,不会显示任何与
enter notify event
信号相关的内容

以下是我的观点:

您还可以通过.ui文件设置属性。当您用操作替换单击事件处理程序时,您可以真正简化代码库

所以我认为这应该是可能的。它只提到了GTK按钮的点击处理程序,但我不明白为什么它与其他信号不同

林间空地:

检查员:

<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"/>

通过代码手动激活GAAction,如输出行中的代码,效果很好。当查看EventBox时,该操作也会显示在Inspector中


非常感谢您的帮助:)

我认为您做不到。仅对具有明确用户激活操作的小部件(如按钮或菜单项)实施。尤其是
GtkEventBox
没有实现它

即使它这样做了,该接口也只能管理每个类的一个事件,即激活操作,而不是您感兴趣的
enternotifyevent


因此,我担心您将不得不继续手动连接您的活动。

这不是我所希望的,但感谢您如此详细地解释了一切:)
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)
// });