Domanda

Come aggiungere un ascoltatore di eventi clic al mio controllo personalizzato realizzato con wxWidgets?Il controllo personalizzato utilizza wxWindow come base.Nell'elenco degli eventi vedo

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 

Ma non c'è wxEVT_LEFT_CLICK o simili.

È stato utile?

Soluzione

In genere, non vi è alcun evento "clic" (e nel caso di wxWidgets - non c'è).L'azione del clic è suddivisa nelle sue due parti:Mouse giù e mouse su.In genere quello che pensi come un evento "clic sinistro" viene effettivamente gestito in un evento "sinistra in alto".

Provalo:

  • Passa il mouse sopra un pulsante (come il pulsante "Aggiungi commento" in questa pagina)
  • Fare clic con il pulsante sinistro del mouse e tenerlo premuto
  • Allontanare il mouse dal pulsante tenendolo premuto
  • Rilascia il pulsante sinistro del mouse
  • Non accade nulla!

Questa volta:

  • Passa il mouse sullo stesso pulsante
  • Fai clic sul pulsante a sinistra e tieni premuto
  • Rilascia il pulsante sinistro del mouse
  • L'azione "clic" che ti aspetti viene attivata dall'evento up!

Altri suggerimenti

In primo luogo consiglio di ereditare da wxControl e non da wxWindow, wxControl è progettato per quello scopo esatto ed è meno probabile che ti ritrovi a combattere il sistema.Quando guardo un controllo che sto creando nella mia app wxWidgets, vedo che il mio gestore di clic è collegato a wxEVT_LEFT_DOWN.Osservando la mia copia di Programmazione GUI multipiattaforma con wxWidgets posso vedere un elenco di tutti i wxMouseEvents e non c'è wxEVT_LEFT_CLICK.Suggerirei che wxEVT_LEFT_DOWN sia l'evento da utilizzare.

Ora, dopo aver pubblicato, ho letto la risposta di Burly e sono d'accordo con lui, wxWidgets offre gli eventi di livello più basso e questo ti dà il massimo controllo dell'interfaccia utente che costruisci per i tuoi utenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top