我试图Enter在GtkEntry
. 我发现的大多数资源都建议连接到activate
信号,但GtkEntry 的文档状态(强调我的):
应用程序不应连接到它,但如果需要以编程方式控制激活,则可以使用 g_signal_emit_by_name() 发出它。
我很好奇这背后的基本原理以及普遍接受的替代方案是什么。我知道我可以连接到key-press-event
信号并检查密钥代码,但我想知道是否有更优雅的解决方案。
我试图Enter在GtkEntry
. 我发现的大多数资源都建议连接到activate
信号,但GtkEntry 的文档状态(强调我的):
应用程序不应连接到它,但如果需要以编程方式控制激活,则可以使用 g_signal_emit_by_name() 发出它。
我很好奇这背后的基本原理以及普遍接受的替代方案是什么。我知道我可以连接到key-press-event
信号并检查密钥代码,但我想知道是否有更优雅的解决方案。
这是一个键绑定信号。这意味着 GTK 已设置,因此当您按下Enter条目时,会发出信号。如果您想模拟Enterpress ,它也可以通过编程方式发出,因此不能保证信号实际上是按键的结果。
如果您想捕获按键,那么最好的方法是连接到key-press-event
.
也就是说,我不明白为什么你不能使用activate
信号。大多数键绑定信号不应连接到,但这似乎是有道理的。我认为你应该在 gtk-devel 邮件列表上要求澄清,或者在 bugzilla.gnome.org 上提交一个错误,说应该澄清这个信号的文档。
提到的激活信号的 GtkEntry 文档:
应用程序不应连接到它,但如果需要以编程方式控制激活,则可以使用 g_signal_emit_by_name() 发出它。
...已更改为:
虽然此信号用作键绑定信号,但它也常被应用程序用于拦截条目的激活。
这发生在 2012 年 6 月 11 日,提交4a25bac0e7685000fff90a211db6ac60f6b74ab1。提交消息是:
更新 GtkEntry::activate 的文档
从此信号中删除“您不应连接”消息。虽然它是一个键绑定信号,但在应用程序中使用它是好的,事实上,这是预期的。