pos(); //动画还没有结束就先立马停止,防止用户不停的点击 if(pShakeAnimation->state() == QPropertyAnimation::Running) { pShakeAnimation->stop(); } ...-QT开发中文网" />

QT开发中文网

QPropertyAnimation *pShakeAnimation=new QPropertyAnimation(this,"pos"); QPoint pos = this->pos(); //动画还没有结束就先立马停止,防止用户不停的点击 if(pShakeAnimation->state() == QPropertyAnimation::Running) { pShakeAnimation->stop(); } ...

这段代码是一个使用 Qt 的 QPropertyAnimation 实现的摇晃动画。通过修改控件的位置属性 “pos” 来实现摇晃效果。

首先,创建一个 QPropertyAnimation 对象,并指定目标对象为当前对象(this),属性为 “pos”。

接下来,获取当前控件的位置信息作为起始值,并设置动画的持续时间为 300 毫秒。

然后,通过循环生成一系列关键帧。每个关键帧偏移量(offset)在 -5 和 5 之间交替变化,以达到摇晃的效果。通过计算适当的时间索引(dIndex),将每个关键帧添加到动画中。

最后,将结束值设置为起始位置,启动动画。

需要注意以下几点:

  • 这段代码假设该代码片段位于一个 QObject 类型的子类中。
  • 请确保在合适的地方释放 pShakeAnimation 对象,否则可能导致内存泄漏。
  • 需要包含相应的头文件 #include 和 #include

此外,在调用 start() 方法之前,请确保该对象没有正在运行的动画实例。你可以使用 state() 方法检查当前状态并停止旧动画实例(如果有)。

希望以上解答对你有帮助!如有更多问题,请随时提问。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:pos(); //动画还没有结束就先立马停止,防止用户不停的点击 if(pShakeAnimation->state() == QPropertyAnimation::Running) { pShakeAnimation->stop(); } ...">https://qt.0voice.com/?id=9189

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?