Frage

Wie füge ich meinem mit wxWidgets erstellten benutzerdefinierten Steuerelement einen Klickereignis-Listener hinzu?Das benutzerdefinierte Steuerelement verwendet wxWindow als Basis.Auf der Veranstaltungsliste sehe ich

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 

Aber es gibt keinen wxEVT_LEFT_CLICK o.ä.

War es hilfreich?

Lösung

Normalerweise gibt es kein „Klick“-Ereignis (und im Fall von wxWidgets - gibt es nicht).Der Klickvorgang gliedert sich in zwei Teile:Maus runter und Maus hoch.Normalerweise wird das, was Sie als „Linksklick“-Ereignis bezeichnen, tatsächlich in einem „Linksklick“-Ereignis behandelt.

Versuch es:

  • Bewegen Sie den Mauszeiger über eine Schaltfläche (z. B. die Schaltfläche „Kommentar hinzufügen“ auf dieser Seite).
  • Klicken Sie mit der linken Maustaste und halten Sie die Maustaste gedrückt
  • Bewegen Sie die Maus von der Taste weg, während Sie sie gedrückt halten
  • Lassen Sie die linke Maustaste los
  • Nichts passiert!

Diesmal:

  • Bewegen Sie den Mauszeiger über dieselbe Schaltfläche
  • Klicken Sie auf die Schaltfläche Linksmau und halten Sie sie gedrückt
  • Lassen Sie die linke Maustaste los
  • Die erwartete „Klick“-Aktion wird durch das up-Ereignis ausgelöst!

Andere Tipps

Im ersten Fall empfehle ich erben von wxControl nicht wxWindow, wxControl für die exakt Zweck ausgelegt ist und Sie sind weniger wahrscheinlich, dass sich kämpfen um das System zu finden. Als ich bei einer Kontrolle sehe ich in meinem eigenen WxWidgets app bauen bin, ich sehe, dass mein Click-Handler zu wxEVT_LEFT_DOWN angebracht ist. Suchen Sie in meiner Kopie von Cross Platform GUI-Programmierung mit wxWidgets kann ich eine Liste aller wxMouseEvents sehen, und es gibt keine wxEVT_LEFT_CLICK. Ich würde vorschlagen, wxEVT_LEFT_DOWN das Ereignis zu verwenden.

Jetzt nach der Einlieferung Ich habe Kräftige Antwort gelesen und ich stimme ihm zu, bietet WxWidgets den niedrigsten Level-Events und das gibt Ihnen die maximale Menge an Kontrolle über die Benutzeroberfläche Sie für Ihre Benutzer erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top