求助 在一个类里面画一个简单动画,但是没出来,不知道为什么
如题,是在一个类里面添加动画但是不知道为什么没有。
代码:
在鼠标响应函数里写的下面两行
QWidget *w=new QWidget();
w = parentWidget();
void ScHomepage::imagemove(QWidget *parent)
{
parent->resize(300,400);
birdimg=QPixmap("bird.png").scaled(40,40);
QLabel *bird_1=new QLabel(parent);
bird_1->setPixmap(birdimg);
QPropertyAnimation *anim1=new QPropertyAnimation(bird_1, "pos");
anim1->setDuration(2000);
anim1->setStartValue(QPoint(10, 570));
anim1->setEndValue(QPoint(10, 400));
anim1->start();
bird_1->move(-40,-40);
parent->show();
}
[解决办法]
parent->resize(300,400);
birdimg=QPixmap("bird.png").scaled(40,40);
QLabel *bird_1=new QLabel(parent);
bird_1->setPixmap(birdimg);
bird_1->show();
QPropertyAnimation *anim1=new QPropertyAnimation(bird_1, "pos");
anim1->setDuration(2000);
anim1->setStartValue(QPoint(10, 570));
anim1->setEndValue(QPoint(10, 400));
anim1->start();
bird_1->move(-40,-40);
parent->show();
[解决办法]
你最终要达到什么样的效果?
[解决办法]
animation是动画,受时间驱动,跟鼠标点击没什么必然关系。
如果你想做的是 点击一下 鸽子移动一下(平滑的),那你这边比较简单的做法是
做(5-1)个animation。每个animation的位置确保的是到下一个animation之间的平滑移动,
下面是qt助手上的说明
QPropertyAnimation *animation = new QPropertyAnimation(myWidget, "geometry");
animation->setDuration(10000); //定义动画的持续时间
animation->setStartValue(QRect(0, 0, 100, 30)); //定义起始位置
animation->setEndValue(QRect(250, 250, 100, 30)); //结束位置
animation->start();
你可以定义4个animation,每个animation确保移动到下一个位置即可。在鼠标click时,触发不同的animation start