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