目录

官方解析

博主例子


官方解析

easingCurve:QEasingCurve

这个属性保留了动画的缓和曲线。
他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值。下面举出其他曲线的例子:
QEasingCurve::InCirc 这个属性提供了圆形入口曲线。
QEasingCurve::InOutElastic这个属性为插入值提供了弹性效果。
QVarantAnimation将使用QEasingCure::valueForProgress()将把动画的“常规进度”(currentTime/totalDuration)转化为动画使用的实际有效进度。当interpolated()被调用时这将会是一个有效的进度。所以keyValues里的步骤将与有效进度相关联。
缓和曲线与插入器一起使用,interpolated()这个虚函数与动画的持续时间将控制当前动画进度改变的值。

博主例子

使用QEasingCurve::InOutSine实现动态旋转

本次例子很有趣!运行截图如下:

源码如下
widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPoint>QT_BEGIN_NAMESPACE
class QPropertyAnimation;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTQ_PROPERTY(qreal index READ index WRITE setIndex)public:explicit Widget(QWidget *parent = 0);~Widget();qreal index()const;void setIndex(qreal index);protected:void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;private:Ui::Widget *ui;QPropertyAnimation *m_animation;QList<QWidget*> listBtn;QList<QPoint> listPoint;qreal m_index;
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"#include <QPropertyAnimation>
#include <QKeyEvent>
#include <QDebug>
#include <QtMath>#ifndef M_PI
#define M_PI 3.14159265358979323846
#endifWidget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);listBtn<<ui->pushButton;listBtn<<ui->pushButton_2;listBtn<<ui->pushButton_3;listBtn<<ui->pushButton_4;listPoint<<ui->pushButton->pos();listPoint<<ui->pushButton_2->pos();listPoint<<ui->pushButton_3->pos();listPoint<<ui->pushButton_4->pos();ui->pushButton->setFocusPolicy(Qt::NoFocus);ui->pushButton_2->setFocusPolicy(Qt::NoFocus);ui->pushButton_3->setFocusPolicy(Qt::NoFocus);ui->pushButton_4->setFocusPolicy(Qt::NoFocus);m_animation=new QPropertyAnimation(this,"index");m_animation->setDuration(400);m_animation->setEasingCurve(QEasingCurve::InOutSine);this->setWindowTitle("CSDN IT1995");m_index=0;setIndex(0);
}Widget::~Widget()
{delete ui;
}qreal Widget::index() const
{return m_index;
}void Widget::setIndex(qreal index)
{m_index=index;for(int i=0;i<listPoint.size();i++){qreal a=((i+m_index)*2*M_PI)/listBtn.count();int xs=200*qSin(a)+200;int ys=200*qCos(a)+200;QPointF pos(xs,ys);listBtn[i]->setGeometry(xs,ys,100,50);qDebug()<<listBtn[i]->pos();}
}void Widget::keyPressEvent(QKeyEvent *event)
{int delta = 0;switch(event->key()){case Qt::Key_Left:delta = -1;break;case  Qt::Key_Right:delta = 1;break;default:break;}if(m_animation->state()==QAbstractAnimation::Stopped&&delta){m_animation->setEndValue(m_index+delta);m_animation->start();event->accept();}
}

Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例相关推荐

  1. Qt文档阅读笔记-Image QML官方解析与实例

    目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...

  2. Qt文档阅读笔记-Widgets Tutorial官方解析及实例

    目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...

  3. Qt文档阅读笔记-QML RotationAnimation官方解析及实例

    目录 官方解析 博主例子 官方解析 RotationAnimation是一个属性动画,这个属性控制图片的旋转. 默认情况下,他在给定的数值方向上旋转,比如从0度顺时针旋转到240度,也可以逆时针旋转比 ...

  4. Qt文档阅读笔记-QHeaderView::sectionResized官方解析与实例

    目录 官方解析 博主例子 官方解析 不翻译了,很简单的英语 博主例子 程序运行截图如下 源码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include ...

  5. Qt工作笔记-Qt文档阅读笔记-qualifiedName()的官方解析及XML使用名称空间

    目录 官方解析 博主例子 官方解析 QXmlStreamReader::qualifiedName() 返回StartElement或EndElement的限制名: 限制名是XML数据中元素的原始名称 ...

  6. Qt文档阅读笔记-编写应用脚本解析与实例

    目录 官方解析 博主例子 官方解析 编写应用脚本 Qt提供了JavaScript脚本对应用程序的支持.下面将全方位说明JavaScript在Qt中的应用. Scripting Classes 如下的类 ...

  7. Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)

    目录 官方解析 Construction/Destruction Order of QObjects 博主栗子 继承里面构造函数与析构函数的顺序 在Qt中,object trees里面的创建与析构 [ ...

  8. Qt文档阅读笔记-The Meta-Object System解析及实例

    目录 官方解析 博主栗子 关于QMetaObject::className()的栗子 官方解析 Qt元对象系统提供了信号与槽机制,通过信号与槽实现对象间的通信,RTTI,以及动态属性系统. meta- ...

  9. Qt文档阅读笔记-GridLayout QML Type解析与实例

    目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...

最新文章

  1. 中柏平板触摸驱动_工业平板电脑触摸屏种类及故障解决办法,赶紧收藏起来
  2. CCNA-(9)-思科交换机特点
  3. Thinkphp5.0 多图上传名称重复BUG
  4. 机器学习基石-作业三-代码部分
  5. 网络规划设计师复习笔记
  6. String类的两种赋值
  7. A4排成A3双面打印怎么操作
  8. 收藏——硬币(五大天王和四小龙)
  9. 程序员除了去上班还能怎样赚钱?
  10. IC REG BUCK ADJUSTABLE 3A 8SOIC
  11. 免费开放API支付接口
  12. MUTAN:Multimodal Tucker Fusion For Visual Question Answering
  13. day15、16:Python的魔方方法
  14. 辰视冯良炳博士将于ITES机器视觉与机器人创新应用大讲台开讲
  15. 洛谷刷题笔记 打印 ASCII 码
  16. 基于springboot的汽车租赁管理系统的设计与实现
  17. 如何在 UltraEdit 工具中批量删除空行
  18. 揭秘“菲住布渴”中运用的黑科技:除了check in、坐电梯、开门...全部刷脸之外,还有什么?... 1
  19. 永远抢不到原价演唱会门票?来试试窗口同步功能吧
  20. 联想Thinkpad W520评论

热门文章

  1. 分享3段平时很实用的微代码,高手莫喷
  2. shell:判断一个进程是否存在
  3. VMware Workstation 8 技巧集
  4. 读书笔记:《时间投资法》之二
  5. 某一个物种能够在 1 分钟之内干掉资深程序员...网友称:恐怖如斯!
  6. 为什么 ++[[]][+[]]+[+[]] = 10 ?
  7. Web开发者的最佳开发调试环境Chrome
  8. 飞鸽传书程序IT基础架构和应用的管理
  9. 真诚地希望你耐心的把它看完
  10. 微信“拍一拍”,竟然可以使用Python实现,你get到了吗?