Происходит бесконечное вращение объекта

нужно вращать объект. Я пробовал вращать таким образом, но вращение происходит бесконечно, а нужно, чтобы доходило до угла в 45 градусов, а затем вращалось в обратную сторону. Может увидете, где ошибка?

static int angle = 0;
        int step = 1;
 
            QPoint p0(600, 500);
            QTransform t;
            t.translate(p0.x(),p0.y()); 
 
            t.rotate(angle-step);
            step++;
 
 
            if (step == 45) {
 
                step = -1;
                t.rotate(angle-step);
                step--;
 
            }
            else
            {
                t.rotate(angle-step);
                step++;
 
            }
 
            t.translate(-p0.x(),-p0.y());
            carPainter.setTransform(t);

Ответы (1 шт):

Автор решения: eri

У вас какой-то странный код в плане переменной step. Вы её переписываете

step++ два раза - поэтому крутится в одну сторону. если убрать лишний раз, то оно бы начало дергаться на 44-55.

установи начально переменную step=1. при переходе через 45 и 0 step=-step. безусловно angle+=step и t.setRotation(angle) будет шагать и туда и обратно.

→ Ссылка