QT开发中文网

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

这段代码是使用Qt实现窗口抖动效果的示例。下面逐句详细解释:

QPoint pos = this->pos();

获取当前窗口的位置。

if(pShakeAnimation->state() == QPropertyAnimation::Running)
{
  pShakeAnimation->stop();
}

检查抖动动画是否正在运行,如果是,则停止当前正在运行的动画。

pShakeAnimation->setDuration(600);
pShakeAnimation->setStartValue(pos);

设置抖动动画的持续时间为600毫秒,并设置起始值为当前窗口的位置。

int offset =0;
double dOffset = (double)1/30;
double dIndex =dOffset;
for(int i=1;i<30;i++){
    offset = i%2==0?-10:10;
    dIndex += dOffset;
    pShakeAnimation->setKeyValueAt(dIndex,pos + QPoint((int)offset,(int)offset));
}

通过循环创建关键帧,实现窗口的抖动效果。在每个关键帧中,根据偏移量(offset)和时间索引(dIndex),计算新的窗口位置,并将其作为关键帧添加到抖动动画中。

pShakeAnimation->setEndValue(pos);
pShakeAnimation->start();

设置最后一个关键帧为初始位置(pos),然后启动抖动动画。

总体来说,这段代码通过使用QPropertyAnimation来创建一个平滑过渡的抖动动画效果。它会在一段时间内逐渐改变窗口的位置,从而实现抖动的效果。你可以根据需要调整持续时间、偏移量和关键帧数量等参数来自定义抖动效果。


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

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9194

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?