简单使用QEasingCurve来实现运动动作

通过QEasingCurve来方便实现物理相似动作。

代码如下:

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_M)
    {
        QPropertyAnimation *animation = new QPropertyAnimation(ui->lineEdit, "geometry");
        animation->setDuration(10000); //动作时间
        animation->setStartValue(ui->lineEdit->geometry()); //开始动作值
        animation->setEndValue(QRect(200, 200, 100, 50)); //结束动作值

        QEasingCurve curve; //动作曲线
        curve.setType(QEasingCurve::OutBounce); //动作曲线方式
        curve.setAmplitude(3.00); //回弹Bounce振幅
        curve.setOvershoot(2.70); //超调量,就是稳定量
        curve.setPeriod(4.90); //频率当量
        animation->setEasingCurve(curve);

        animation->setLoopCount(2); //动作次数,如果为-1表示一直循环
        animation->start(); //开始动作
        //this->close();
    }

    qDebug() << event->text() << "has been pressed";
}

其中

Amplitude: The higher the amplitude, the higher the bounce or elastic spring effect that will be applied to the animation.

Overshoot: Some curve functions will produce an overshoot (exceeding its final value) curve due to a damping effect.

                   By adjusting the overshoot value, we are able to increase or decrease this effect.

Period: Setting a small period value will give a high frequency to the curve. A large period will give it a small frequency.

运行代码,效果如下:

多谢,亲爱的美美。

猜你喜欢

转载自blog.csdn.net/islinyoubiao/article/details/113750705