Pregunta

¿Cómo agregar un detector de eventos de clic a mi control personalizado creado con wxWidgets?El control personalizado utiliza wxWindow como base.En la lista de eventos veo

wxEVT_LEFT_DOWN 
wxEVT_LEFT_UP 
wxEVT_LEFT_DCLICK
wxEVT_MIDDLE_DOWN
wxEVT_MIDDLE_UP 
wxEVT_MIDDLE_DCLICK
wxEVT_RIGHT_DOWN 
wxEVT_RIGHT_UP
wxEVT_RIGHT_DCLICK
wxEVT_MOTION
wxEVT_ENTER_WINDOW
wxEVT_LEAVE_WINDOW
wxEVT_MOUSEWHEEL 

Pero no hay wxEVT_LEFT_CLICK o similar.

¿Fue útil?

Solución

Normalmente, no hay ningún evento de "clic" (y en el caso de wxWidgets - no hay).La acción de hacer clic se divide en sus dos partes:Ratón abajo y ratón arriba.Normalmente, lo que usted considera un evento de "clic izquierdo" en realidad se maneja en un evento "izquierdo arriba".

Pruébalo:

  • Pase el cursor sobre un botón (como el botón "Agregar comentario" en esta página)
  • Haga clic con el botón izquierdo del mouse y mantenga presionado
  • Mueva el mouse fuera del botón mientras mantiene presionado
  • Suelte el botón izquierdo del ratón
  • ¡No pasa nada!

Esta vez:

  • Pase el cursor sobre el mismo botón
  • Haga clic en el botón del mouse izquierdo hacia abajo y mantenga presionado
  • Suelte el botón izquierdo del ratón
  • ¡La acción de "clic" que espera se activa con el evento de subida!

Otros consejos

En primera instancia, recomiendo heredar de wxControl, no de wxWindow, wxControl está diseñado exactamente para ese propósito y es menos probable que se encuentre luchando contra el sistema.Cuando miro un control que estoy creando en mi propia aplicación wxWidgets, veo que mi controlador de clics está adjunto a wxEVT_LEFT_DOWN.Al mirar mi copia de Programación GUI multiplataforma con wxWidgets, puedo ver una lista de todos los wxMouseEvents y no hay ningún wxEVT_LEFT_CLICK.Sugeriría que wxEVT_LEFT_DOWN sea el evento a utilizar.

Ahora, después de publicar, leí la respuesta de Burly y estoy de acuerdo con él, wxWidgets ofrece eventos de nivel más bajo y eso le brinda el máximo control de la interfaz de usuario que construye para sus usuarios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top