2011-12-15 16 views
9

Estoy tratando de capturar la Introduzca la clave cuando se presiona en un GtkEntry. La mayor parte de los recursos que he encontrado sugerir que conecta a la señal activate, pero los documentation for GtkEntry estados (el énfasis es mío):Cómo capturar la tecla Entrar, presione GtkEntry

aplicaciones no deben conectarse a él, pero pueden emitir con g_signal_emit_by_name() si necesitan para controlar la activación mediante programación.

Tengo curiosidad sobre la razón detrás de esto y también cuál es la alternativa generalmente aceptada. Sé que puedo conectarme a la señal key-press-event y verificar el código de la llave, pero me pregunto si hay una solución más elegante.

+0

Soy bastante consciente de lo que dicen los documentos, pero siempre he usado, hasta ahora no ha surgido ningún problema. Si fuera usted, lo usaría y averiguaría a través de las pruebas si no funciona.Aunque podría verificar el código detrás de la fuente en GtkEntry para ver si no se ajusta a sus necesidades. – erick2red

Respuesta

9

Es una señal de enlace. Eso significa que GTK está configurado de modo que cuando presione Ingrese en la entrada, la señal se emite. También se puede emitir mediante programación si desea simular presionando Ingrese, por lo que no hay garantía de que la señal fue realmente el resultado de una pulsación de tecla.

Si desea capturar presionar una tecla, entonces la mejor manera es conectarse a key-press-event.

Dicho esto, no veo por qué no puede utilizar la señal activate. La mayoría de las señales de enlace no deberían estar conectadas, pero esta parece tener sentido. Creo que debería pedir una aclaración en la lista de correo gtk-devel o presentar un error en bugzilla.gnome.org diciendo que la documentación para esta señal debe ser aclarada.

+1

Hecho y hecho. Gracias por su respuesta. https://bugzilla.gnome.org/show_bug.cgi?id=666364 –

2

La documentación mencionada GtkEntry para la señal de activación:

aplicaciones no deben conectarse a él, pero pueden emitir con g_signal_emit_by_name() si necesitan para controlar la activación mediante programación.

... se ha cambiado a:

Mientras que esta señal se utiliza como señal de combinación de teclas, también es comúnmente utilizado por las aplicaciones para interceptar la activación de las entradas.

Esto sucedió el 2012-06-11 comprometerse con 4a25bac0e7685000fff90a211db6ac60f6b74ab1. El mensaje del informe es:

documentos de actualización para GtkEntry :: activan

Retire el 'no debe conectarse' mensaje de esta señal. Si bien es una señal de combinación de teclas, usarlo de las aplicaciones está bien y, de hecho, se espera.

Cuestiones relacionadas