#include "shakewidget.h"
#include "ui_shakewidget.h"
#include <QDebug>
ShakeWidget::ShakeWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ShakeWidget)
{
ui->setupUi(this);
move(600, 300);
m_basePos = pos();
m_animation = new QPropertyAnimation(this, "pos");
}
ShakeWidget::~ShakeWidget()
{
delete ui;
}
void ShakeWidget::shake()
{
m_animation->setDuration(300);
// m_animation->setStartValue(QPoint(m_oldPos.x(), m_oldPos.y()));//indifferent
m_animation->setKeyValueAt(0, QPoint(m_basePos.x(), m_basePos.y()));
m_animation->setKeyValueAt(0.09, QPoint(m_basePos.x()+2, m_basePos.y()-2));
m_animation->setKeyValueAt(0.18, QPoint(m_basePos.x()+4, m_basePos.y()-4));
m_animation->setKeyValueAt(0.27, QPoint(m_basePos.x()+2, m_basePos.y()-6));
m_animation->setKeyValueAt(0.36, QPoint(m_basePos.x()+0, m_basePos.y()-8));
m_animation->setKeyValueAt(0.45, QPoint(m_basePos.x()-2, m_basePos.y()-10));
m_animation->setKeyValueAt(0.54, QPoint(m_basePos.x()-4, m_basePos.y()-8));
m_animation->setKeyValueAt(0.63, QPoint(m_basePos.x()-6, m_basePos.y()-6));
m_animation->setKeyValueAt(0.72, QPoint(m_basePos.x()-8, m_basePos.y()-4));
m_animation->setKeyValueAt(0.81, QPoint(m_basePos.x()-6, m_basePos.y()-2));
m_animation->setKeyValueAt(0.90, QPoint(m_basePos.x()-4, m_basePos.y()-0));
m_animation->setKeyValueAt(0.99, QPoint(m_basePos.x()-2, m_basePos.y()+2));
m_animation->setEndValue(QPoint(m_basePos.x(), m_basePos.y()));
m_animation->start();
}
void ShakeWidget::on_pushButton_clicked()
{
shake();
}
窗体部件效果之颤抖窗体
最新推荐文章于 2020-03-26 00:14:55 发布