Nie wiem, czy To pomaga, ale mieliśmy podobne wyzwanie, jakim jest wykrywanie danych wejściowych ze skanera kodów kreskowych Skaner po prostu "wpisał" w niektórych cyfrach bardzo szybko: niektóre skanery kończą je znakiem kontrolnym, ale ponieważ nie jest to uniwersalne, nie możemy nawet na tym polegać.
Zauważyłem, że QEvent::KeyboardLayoutChange
zostanie uruchomiony, gdy skaner kodów kreskowych rozpocznie inpu t, ale nie jestem pewien, czy ma to zastosowanie we wszystkich możliwych scenariuszach - ale możesz chcieć to sprawdzić.
Skończyło się zainstalowanie filtra zdarzeń aplikacji szeroki (QApplication::installEventFilter
), który sprawdza klawiszy (QEvent::ShortcutOverride
lub QEvent::KeyPress
) iw oparciu o takie kryteria jak ciągłej sekwencji cyfr, bardzo krótkim odstępie czasu, itp zdecyduje, że to było wejście kodów kreskowych . Ma oczywiste pułapki, ale jeśli potrzebujesz bardzo ogólnego rozwiązania, możesz być zainteresowany czymś podobnym. Ponadto, jeśli wejście RFID zawsze zwraca znak kontrolny, może to znacznie uprościć to podejście.
O ile mi wiadomo, nie ma na to sposobu. Który system operacyjny jest kierowany? –
Och, przepraszam, zapomniałem o tym wspomnieć. Najprawdopodobniej będą to tylko okna. –
Nie jestem użytkownikiem systemu Windows, więc nie jest to pełna odpowiedź - jeśli wiesz, jak odróżnić RFID od rzeczywistej klawiatury za pomocą zdarzeń MSG systemu Windows, to QCoreApplication :: winEventFilter (lub, w Qt 5, QCoreApplication :: installNativeEventFilter) może pomóc. – peppe