Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
发布日期:2021-06-30 10:56:43 浏览次数:2 分类:技术文章

本文共 2644 字,大约阅读时间需要 8 分钟。

目录


官方解析

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 
#include
QT_BEGIN_NAMESPACEclass QPropertyAnimation;QT_END_NAMESPACEnamespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECT Q_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
listBtn; QList
listPoint; qreal m_index;};#endif // WIDGET_H

main.cpp

#include "widget.h"#include 
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 
#include
#include
#include
#ifndef M_PI#define M_PI 3.14159265358979323846#endifWidget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); listBtn<
pushButton; listBtn<
pushButton_2; listBtn<
pushButton_3; listBtn<
pushButton_4; listPoint<
pushButton->pos(); listPoint<
pushButton_2->pos(); listPoint<
pushButton_3->pos(); listPoint<
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
setGeometry(xs,ys,100,50); qDebug()<
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(); }}

 

转载地址:https://it1995.blog.csdn.net/article/details/82849140 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Qt文档阅读笔记-QGraphicsBlurEffect官方解析与实例
下一篇:软件设计师学习笔记-软件工程

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月29日 04时04分47秒