如何在GtkEntry中捕获Enter键按下

时间:2011-12-15 13:03:29

标签: gtk gtk3 gtkentry

我试图在GtkEntry中按下 Enter 键。我发现的大多数资源建议连接activate信号,但documentation for GtkEntry状态(强调我的):

  

应用程序不应该连接到它,但可能会发出它   g_signal_emit_by_name()如果需要控制激活   编程。

我很好奇这背后的理由以及普遍接受的替代方案。我知道我可以连接到key-press-event信号并检查密钥代码,但我想知道是否有更优雅的解决方案。

2 个答案:

答案 0 :(得分:10)

这是一个键绑定信号。这意味着GTK已设置为当您在条目中按 Enter 时,将发出信号。如果你想模拟 Enter ,它也可以通过编程方式发出,所以无法保证信号实际上是按键的结果。

如果您想捕获按键,那么最好的方法是连接到key-press-event

那就是说,我不明白为什么你不能使用activate信号。大多数键绑定信号不应该连接,但这个似乎是有道理的。我想你应该在gtk-devel邮件列表上要求澄清,或者在bugzilla.gnome.org上提交一个错误,说明该信号的文档应该澄清。

答案 1 :(得分:2)

提到的激活信号的GtkEntry文档:

  

应用程序不应该连接到它,但可能会发出它   g_signal_emit_by_name()如果需要控制激活   编程。

...已更改为:

  

虽然该信号用作键绑定信号,但它也是常见的   应用程序用来拦截条目的激活。

这发生在2012-06-11,提交4a25bac0e7685000fff90a211db6ac60f6b74ab1。提交消息是:

  

更新GtkEntry :: activate

的文档      

删除'你不应该连接'   来自此信号的消息。虽然它是一个键绑定信号,使用它   应用程序很好,实际上是预期的。