【问题标题】:How to capture Enter key press in GtkEntry如何在 GtkEntry 中捕获 Enter 按键
【发布时间】:2011-12-15 13:03:28
【问题描述】:

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

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

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

【问题讨论】:

  • 我很清楚文档所说的内容,但我一直在使用,到目前为止还没有出现任何问题。如果我是你,我会使用并通过测试找出是否不起作用。虽然您可以检查 GtkEntry 源代码后面的代码,看看它是否不符合您的需求。

标签: gtk gtk3 gtkentry


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

上述激活信号的 GtkEntry 文档:

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

...已更改为:

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

这发生在 2012 年 6 月 11 日,提交 4a25bac0e7685000fff90a211db6ac60f6b74ab1。提交信息是:

更新 GtkEntry::activate 的文档

删除“您不得连接” 来自这个信号的消息。虽然它是一个键绑定信号,但使用它 from applications 很好,实际上是预期的。

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2011-01-30
    相关资源
    最近更新 更多