Estoy jugando con algunos gráficos, y he implementado un movimiento simple de la cámara con las teclas de flecha. Mi primer acercamiento fue para anular keyPressEvent
a hacer algo como esto:Compruebe si una tecla está abajo con Qt
switch(key)
{
case up: MoveCameraForward(step); break;
case left: MoveCameraLeft(step); break;
...
}
Esto no funciona como yo quiero que lo haría. Cuando presiono y sostengo, por ejemplo, la tecla de avance, la cámara se mueve hacia delante unidades "paso", luego se detiene por un momento y luego continúa moviéndose. Supongo que así es como se genera el evento, para evitar eventos múltiples en caso de una pulsación de tecla algo larga.
Por lo tanto, necesito sondear el teclado en mi rutina Paint()
. No he encontrado cómo hacerlo con Qt. Pensé en tener un map<Key, bool>
que se actualizaría en keyPressEvent
y keyReleaseEvent
y sondearía ese mapa en Paint()
. Alguna mejor idea? Gracias por cualquier idea.
Esto es especialmente recomendable, ya que la velocidad de repetición del teclado puede ser configurada por el usuario. Esta es la única forma de garantizar que sea independiente de su tasa de ticks interna. – RedX
Hay un hilo y un ejemplo sobre esto en los foros de qt: http://qt-project.org/forums/viewreply/135346/ – bobbaluba