Sto giocando con alcuni elementi grafici e ho implementato il semplice movimento della fotocamera con i tasti freccia. Il mio primo approccio è stato quello di ignorare keyPressEvent
a fare qualcosa di simile:Verifica se una chiave non è attiva con Qt
switch(key)
{
case up: MoveCameraForward(step); break;
case left: MoveCameraLeft(step); break;
...
}
Questo non funziona come vorrei che avrebbe fatto. Quando premo e tengo premuto, ad esempio, il tasto avanti, la telecamera avanza unità "step", quindi si blocca per un po 'e poi continua a muoversi. Sto indovinando che questo è il modo in cui l'evento viene generato, al fine di evitare più eventi in caso di un breve pressione del tasto.
Quindi, ho bisogno di eseguire il polling della tastiera nella mia routine Paint()
. Non ho trovato come farlo con Qt. Ho pensato di avere uno map<Key, bool>
che sarebbe stato aggiornato in keyPressEvent
e keyReleaseEvent
e il polling di quella mappa in Paint()
. Qualche idea migliore? Grazie per eventuali approfondimenti.
Ciò è particolarmente consigliato poiché la velocità di ripetizione della tastiera può essere impostata dall'utente. Questo è l'unico modo per garantire che sia indipendente dalla frequenza di tick interna. – RedX
C'è una discussione e un esempio su questo nei forum qt: http://qt-project.org/forums/viewreply/135346/ – bobbaluba