Unterscheiden zwischen Einzel-und Doppel-klicken Sie auf Ereignisse in Qt
Ich habe eine QAbstractItemView
die Bedürfnisse zu reagieren, um Einzel-und Doppel-klicken Sie auf Ereignisse. Die Aktionen sind unterschiedlich, je nachdem, ob er single war geklickt wird oder doppelt geklickt. Das problem ist, dass das Klick-Ereignis empfangen wird, bevor der Doppelklick-Ereignis.
Gibt es eine empfohlene Vorgehensweise/best practice für die Unterscheidung zwischen den beiden? Ich don ' T wollen, führen Sie die Klick-Aktion, wenn der Benutzer doppelt geklickt hat.
Ich bin mit Qt 4.6
InformationsquelleAutor der Frage Jesse Vogt | 2011-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie Antwort in dem thread mit dem Titel Doppel-Klick-Aufnahme auf QtCentre forum;
InformationsquelleAutor der Antwort Piotr Dobrogost
Es ist ein gutes UI-design, um sicherzustellen, dass Ihr single-Klicks und Doppelklicks sind begrifflich mit:
Beachten Sie, wie in diesen Beispielen der single-Klick-Aktion ist tatsächlich eine Teilmenge der Doppel-klicken Sie auf. Das bedeutet, Sie können gehen Sie voran und tun Sie Ihre single-klicken Sie auf Aktion in der Regel und nur die zusätzliche Aktion, wenn das Doppel-Klick kommt.
Wenn Sie Ihre Benutzer-interface sieht etwas wie:
Dann Sie setzen Ihre Benutzer zum scheitern verurteilt. Auch wenn Sie sich daran erinnern, was single-Klick macht versus double-Klick die ganze Zeit, es ist sehr einfach, versehentlich bewegen Sie Ihre Maus zu weit, während Doppel-Klick, oder zu lange warten.
Edit:
Tut mir Leid, das zu hören.
In diesem Fall fand ich diese beiden Artikel nützlich:
Windows konvertiert einzelne Klicks in
Doppel-Klicks
höherer Ordnung Klicks
InformationsquelleAutor der Antwort Bill
Mit PySide, das ist die Python-Anbindung an Qt 4.8, sah ich, dass einzelne Klicks liefern
QEvent.MouseButtonPress
event-und Doppel-Klicks liefern einen einzigenQEvent.MouseButtonPress
Ereignis, dicht gefolgt von einerQEvent.MouseButtonDblClick
. Die Verzögerung ist rund100ms
auf Windows. Das bedeutet, dass Sie immer noch ein problem, wenn Sie brauchen, um zu differenzieren zwischen einfachen und doppelten Klicks.Muss die Lösung eine andere
QTimer
mit einer etwas höheren Verzögerung als die eingebaute Verzögerung (Zugabe von etwas overhead). Wenn Sie beobachten, einQEvent.MouseButtonPress
Veranstaltung, die Sie starten Sie Ihren eigenen timer, im Falle von timeout es ist ein einziger Klick. Im Falle einerQEvent.MouseButtonDblClick
es ist eine Doppel-klicken Sie auf und stoppen Sie den timer, um zu vermeiden, zählt als Klick.InformationsquelleAutor der Antwort Trilarion