欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt动画效果的实现(二):移动效果

程序员文章站 2024-01-04 12:56:52
...

      本篇博客实现移动的效果,如下图:

Qt动画效果的实现(二):移动效果

     代码的相关说明可以参考上篇博客,这里直接贴出代码,不难,很好理解:

     头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QParallelAnimationGroup>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_btnMove_clicked();

private:
    Ui::MainWindow *ui;

     QParallelAnimationGroup *m_group;
};

#endif // MAINWINDOW_H

    cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSequentialAnimationGroup>
#include <QPropertyAnimation>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置位置
    QPropertyAnimation *pPosAnimation1 = new QPropertyAnimation(ui->MoveBlock, "pos");
    pPosAnimation1->setDuration(1000);
    pPosAnimation1->setStartValue(QPoint(30, 70));
    pPosAnimation1->setEndValue(QPoint(30, 210));
    pPosAnimation1->setEasingCurve(QEasingCurve::InOutQuad);

    QSequentialAnimationGroup *pPosGroup = new QSequentialAnimationGroup(this);
    pPosGroup->addPause(500);
    pPosGroup->addAnimation(pPosAnimation1);

    m_group = new QParallelAnimationGroup(this);
    m_group->addAnimation(pPosGroup);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btnMove_clicked()
{
    m_group->setDirection(QAbstractAnimation::Forward);
    m_group->setLoopCount(-1);
    m_group->start();
}

   大部分代码和上篇博客一样,可以参考。

相关标签: Qt动画

上一篇:

下一篇: