使label从一个坐标点平滑的移动到另一个坐标点

时间:2021-05-26 05:36:32
我想实现这样的功能:设一个label从一个坐标点平滑的移动到另一个坐标点。现在的实现方法是用定时器,和label的move()方法,每当定时时间到,就调用move()使label移动一下,结果效果就是label移动时一跳一跳的感觉,看来这种实现方法是行不通的了,不知道还有其他的方案么?请高手赐教!

5 个解决方案

#1


QPropertyAnimation,非常简单的程序。

#2


如果想知道原理,可以看看Easing Curve的理论。

#3


引用 1 楼 Inhibitory 的回复:
QPropertyAnimation,非常简单的程序。


我试了一下:
           QPropertyAnimation *animation = new QPropertyAnimation(ui->frame_BMIVal,"geometry");
           animation->setDuration(2000);
           animation->setStartValue(QRect(-3,0,591,175));
           animation->setEndValue(QRect(300,0,591,175));
           animation->setEasingCurve(QEasingCurve::Linear);
           animation->start();

可是感觉还是跳跃的。

#4


定时器的间隔时间设短也不行吧 使label从一个坐标点平滑的移动到另一个坐标点

QTimer *timer = new QTimer;
timer->start(1);

#5


引用 4 楼 kaida1234 的回复:
定时器的间隔时间设短也不行吧 使label从一个坐标点平滑的移动到另一个坐标点

QTimer *timer = new QTimer;
timer->start(1);

不知道是不是在开发板上运行的原因,时间设短好像没什么用

#1


QPropertyAnimation,非常简单的程序。

#2


如果想知道原理,可以看看Easing Curve的理论。

#3


引用 1 楼 Inhibitory 的回复:
QPropertyAnimation,非常简单的程序。


我试了一下:
           QPropertyAnimation *animation = new QPropertyAnimation(ui->frame_BMIVal,"geometry");
           animation->setDuration(2000);
           animation->setStartValue(QRect(-3,0,591,175));
           animation->setEndValue(QRect(300,0,591,175));
           animation->setEasingCurve(QEasingCurve::Linear);
           animation->start();

可是感觉还是跳跃的。

#4


定时器的间隔时间设短也不行吧 使label从一个坐标点平滑的移动到另一个坐标点

QTimer *timer = new QTimer;
timer->start(1);

#5


引用 4 楼 kaida1234 的回复:
定时器的间隔时间设短也不行吧 使label从一个坐标点平滑的移动到另一个坐标点

QTimer *timer = new QTimer;
timer->start(1);

不知道是不是在开发板上运行的原因,时间设短好像没什么用