Qt动画效果的实现(二):移动效果
程序员文章站
2024-01-04 12:56:52
...
本篇博客实现移动的效果,如下图:
代码的相关说明可以参考上篇博客,这里直接贴出代码,不难,很好理解:
头文件:
#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();
}
大部分代码和上篇博客一样,可以参考。