Вам нужно разделять это по потокам. Данные отдельно, юай отдельно.
Хотя судя по всему в на Qt пытаетесь делать игру, это делается если что совсем не так:
- реализуете некую функцию, назовем ее Update, и делаете так чтобы она вызывалась 60 раз в секунду (примерно)
- именно в этой функции делаете вывод графики
- именно в этой функции делаете перемещение, но без задержек, а с привязкой в частоте вызова функции (точнее к времени с предыдущего вызова)
- а вот с вводом интереснее - его надо обрабатывать отдельно и накопительно