Как перехватить нажатие клавиши Enter в GtkEntry - PullRequest
12 голосов
/ 15 декабря 2011

Я пытаюсь перехватить клавишу Enter , когда она нажата в GtkEntry. Большинство ресурсов, которые я нашел, предлагают подключение к сигналу activate, но документация для GtkEntry гласит (выделено мое):

Приложения не должны подключаться к нему , но могут излучать его с g_signal_emit_by_name (), если им нужно контролировать активацию программным способом.

Мне любопытно обоснование этого, а также то, что является общепринятой альтернативой. Я знаю, что могу подключиться к сигналу key-press-event и проверить код клавиши, но мне интересно, есть ли более элегантное решение.

Ответы [ 2 ]

10 голосов
/ 16 декабря 2011

Это сигнал привязки клавиш. Это означает, что GTK настроен так, что когда вы нажимаете Enter в записи, сигнал излучается. Он также может быть передан программно, если вы хотите имитировать нажатие Ввод , поэтому нет никакой гарантии, что сигнал фактически был результатом нажатия клавиши.

Если вы хотите зафиксировать нажатие клавиши, тогда лучше всего подключиться к key-press-event.

Тем не менее, я не понимаю, почему вы не можете использовать сигнал activate. К большинству сигналов связывания не следует подключаться, но этот, похоже, имеет смысл. Я думаю, вам следует попросить разъяснений в списке рассылки gtk-devel или сообщить об ошибке на bugzilla.gnome.org, сказав, что документация для этого сигнала должна быть уточнена.

2 голосов
/ 30 октября 2014

Упомянутая документация GtkEntry для сигнала активации:

Приложения не должны подключаться к нему, но могут генерировать его с помощью g_signal_emit_by_name (), если им необходимо управлять активацией программно.

... было изменено на:

Хотя этот сигнал используется как сигнал привязки клавиш, он также обычно используется приложениями для перехвата активации записей.

Это произошло 2012-06-11 с коммитом 4a25bac0e7685000fff90a211db6ac60f6b74ab1 .Сообщение о коммите:

Обновление документов для GtkEntry :: activ

Удалите из этого сигнала сообщение «Вы не должны подключаться».Несмотря на то, что это сигнал привязки клавиш, его использование в приложениях прекрасно и, по сути, ожидаемо.

...