如何用QT实现一个极其简单的动画?
我们想做一个电梯门开的动画效果,非常简单的就可以。可否在窗口的一部分进行这个动画,电梯就用一个矩形表示,矩形的上方可以显示楼层的变换,开门的时候就有一个小动作开门。请问用...
我们想做一个电梯门开的动画效果,非常简单的就可以。可否在窗口的一部分进行这个动画,电梯就用一个矩形表示,矩形的上方可以显示楼层的变换,开门的时候就有一个小动作开门。请问用QT实现该用到哪些函数?最好能给我提供一些比较核心的代码或者非常简单的QT动画示例。用QTdesigner怎么做呢?
分不是问题 展开
分不是问题 展开
推荐于2018-05-18
展开全部
用Qt中QPropertyAnimation 类实现简单的小动画;
参考代码如下:
.h文件
#ifndef MOVEWIDGET_H
#define MOVEWIDGET_H
#include <QtGui/QWidget>
#include <qpropertyanimation.h>
#include <QLabel>
#include <QApplication>
class MoveWidget : public QWidget
{
Q_OBJECT
public:
MoveWidget(QWidget *parent = 0);
~MoveWidget();
private:
void star();
private:
QPropertyAnimation *animation,
*animation2;
QLabel *myWidget,
*myWidget2;
QString path;
};
#endif // MOVEWIDGET_H
.cpp文件
#include "movewidget.h"
#include "qsequentialanimationgroup.h"
#include "qparallelanimationgroup.h"
MoveWidget::MoveWidget(QWidget *parent)
: QWidget(parent)
{
this->path = QApplication::applicationDirPath();
this->myWidget = new QLabel(this);
this->myWidget2 = new QLabel(this);
this->animation = new QPropertyAnimation(myWidget,"geometry");
this->animation2 = new QPropertyAnimation(myWidget2,"geometry");
//常见QPropertyAnimation对象,关联了myWidget这个窗体的几何属性
this->star();
}
void MoveWidget::star()
{
this->myWidget->setPixmap(QPixmap(this->path + "/hello.png"));
this->myWidget2->setPixmap(QPixmap(this->path + "/hello1.png"));
this->animation->setDuration(2000);//速度,越小越快
this->animation->setStartValue(QRect(0,0,158,168));
this->animation->setEndValue(QRect(250,250,158,168));
// this->animation->setEasingCurve(QEasingCurve::OutBounce);//outbounce有一个缓冲的现象
// this->animation->setEasingCurve(QEasingCurve::OutBack);//outback缓慢降落
// this->animation->setEasingCurve(QEasingCurve::OutCirc);//outcirc和outback差不多
this->animation->setEasingCurve(QEasingCurve::OutInQuart);
this->animation->start();
this->animation2->setDuration(2000);
this->animation2->setStartValue(QRect(0,360,158,168));
this->animation2->setEndValue(QRect(110,180,158,168));
this->animation2->setEasingCurve(QEasingCurve::OutBounce);
this->animation2->start();
}
MoveWidget::~MoveWidget()
{
}
参考代码如下:
.h文件
#ifndef MOVEWIDGET_H
#define MOVEWIDGET_H
#include <QtGui/QWidget>
#include <qpropertyanimation.h>
#include <QLabel>
#include <QApplication>
class MoveWidget : public QWidget
{
Q_OBJECT
public:
MoveWidget(QWidget *parent = 0);
~MoveWidget();
private:
void star();
private:
QPropertyAnimation *animation,
*animation2;
QLabel *myWidget,
*myWidget2;
QString path;
};
#endif // MOVEWIDGET_H
.cpp文件
#include "movewidget.h"
#include "qsequentialanimationgroup.h"
#include "qparallelanimationgroup.h"
MoveWidget::MoveWidget(QWidget *parent)
: QWidget(parent)
{
this->path = QApplication::applicationDirPath();
this->myWidget = new QLabel(this);
this->myWidget2 = new QLabel(this);
this->animation = new QPropertyAnimation(myWidget,"geometry");
this->animation2 = new QPropertyAnimation(myWidget2,"geometry");
//常见QPropertyAnimation对象,关联了myWidget这个窗体的几何属性
this->star();
}
void MoveWidget::star()
{
this->myWidget->setPixmap(QPixmap(this->path + "/hello.png"));
this->myWidget2->setPixmap(QPixmap(this->path + "/hello1.png"));
this->animation->setDuration(2000);//速度,越小越快
this->animation->setStartValue(QRect(0,0,158,168));
this->animation->setEndValue(QRect(250,250,158,168));
// this->animation->setEasingCurve(QEasingCurve::OutBounce);//outbounce有一个缓冲的现象
// this->animation->setEasingCurve(QEasingCurve::OutBack);//outback缓慢降落
// this->animation->setEasingCurve(QEasingCurve::OutCirc);//outcirc和outback差不多
this->animation->setEasingCurve(QEasingCurve::OutInQuart);
this->animation->start();
this->animation2->setDuration(2000);
this->animation2->setStartValue(QRect(0,360,158,168));
this->animation2->setEndValue(QRect(110,180,158,168));
this->animation2->setEasingCurve(QEasingCurve::OutBounce);
this->animation2->start();
}
MoveWidget::~MoveWidget()
{
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用QGraphicsView ,QGraphicsScene 配合 QAnimation 使用就可以有动画效果,而且很漂亮。在QDemo里面有例子的啊,可以去看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。2.。。
追问
那是我们寝室的!法克 尤尔 马泽
追答
楼主怎么说话呢- -
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问你是北邮软院的呗,我也想问这个来着
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
围观
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询