如何在 GtkEntry 中捕获 Enter 按键
Posted
技术标签:
【中文标题】如何在 GtkEntry 中捕获 Enter 按键【英文标题】:How to capture Enter key press in GtkEntry 【发布时间】:2011-12-15 13:03:28 【问题描述】:我试图在GtkEntry
中按下 Enter 键。我发现的大多数资源都建议连接到activate
信号,但documentation for GtkEntry 状态(强调我的):
应用程序不应连接到它,但可能会发出它 g_signal_emit_by_name() 如果他们需要控制激活 以编程方式。
我很好奇这背后的基本原理以及普遍接受的替代方案是什么。我知道我可以连接到key-press-event
信号并检查密钥代码,但我想知道是否有更优雅的解决方案。
【问题讨论】:
我很清楚文档所说的内容,但我一直在使用,到目前为止还没有出现任何问题。如果我是你,我会使用并通过测试找出是否不起作用。虽然您可以检查 GtkEntry 源代码后面的代码,看看它是否不符合您的需求。 【参考方案1】:这是一个键绑定信号。这意味着 GTK 已设置为当您在条目中按 Enter 时,会发出信号。如果您想模拟按Enter,它也可以通过编程方式发出,因此不能保证信号实际上是按键的结果。
如果你想捕捉按键,那么最好的方法是连接到key-press-event
。
也就是说,我不明白你为什么不能使用activate
信号。大多数键绑定信号不应连接到,但这似乎是有道理的。我认为你应该在 gtk-devel 邮件列表上要求澄清,或者在 bugzilla.gnome.org 上提交一个错误,说应该澄清这个信号的文档。
【讨论】:
完成了。感谢您的答复。 bugzilla.gnome.org/show_bug.cgi?id=666364【参考方案2】:上述激活信号的 GtkEntry 文档:
应用程序不应连接到它,但可能会发出它 g_signal_emit_by_name() 如果他们需要控制激活 以编程方式。
...已更改为:
虽然此信号用作键绑定信号,但它也通常用于 应用程序用来拦截条目的激活。
这发生在 2012 年 6 月 11 日,提交 4a25bac0e7685000fff90a211db6ac60f6b74ab1。提交信息是:
更新 GtkEntry::activate 的文档
删除“您不得连接” 来自这个信号的消息。虽然它是一个键绑定信号,但使用它 from applications 很好,实际上是预期的。
【讨论】:
以上是关于如何在 GtkEntry 中捕获 Enter 按键的主要内容,如果未能解决你的问题,请参考以下文章
在 JS/JQuery 中按 ENTER 键之前,如何仅捕获您在文本区域中输入的行? [复制]
Android EditText 捕获KEYCODE_ENTER后按下Del键无法正常退格?