В QML есть средства под названием Аниматоры. Код этих трансформаций всегда работает в потоке рендеринга, а не в основном потоке, в котором обрабатывается пользовательский интерфейс. Поэтому анимация через аниматоры идет очень плавно.
Вот пример:
RotationAnimator {
target: umbrella;
from: 0;
to: 3600;
duration: 10000
running: true
}