首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GtkEventBox在Glade中将信号连接到GAction

GtkEventBox在Glade中将信号连接到GAction
EN

Stack Overflow用户
提问于 2019-01-10 09:25:02
回答 1查看 257关注 0票数 2

我正试图通过Glade将enter-notify-event的GtkEventBox连接到附加的GAction上。使用GtkInspector检查正在运行的应用程序显示没有连接到enter-notify-event信号。

我正在跟踪这篇博客文章,它说:

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

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

林场:

督察:

代码语言:javascript
复制
<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文件)

代码语言:javascript
复制
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时,这个动作也会出现在检查器中。

任何帮助都是非常感谢的:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 12:25:36

我不认为你能做到。GtkActionable仅用于具有明确的用户激活操作的小部件,如按钮或菜单项。特别是,GtkEventBox没有实现它。

即使是这样,这个接口也只能管理每个类的一个事件,激活操作,而不是您感兴趣的enter-notify-event

所以,恐怕你必须继续手动连接你的事件。

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

https://stackoverflow.com/questions/54125491

复制
相关文章

相似问题

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