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"#includeint 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月29日 04时04分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
orw_shellcode_模板
2019-04-30
[fmt+shellcode]string
2019-04-30
fmt在bss段(neepusec_easy_format)
2019-04-30
[double free] 9447 CTF : Search Engine
2019-04-30
glibc中free函数详解
2019-04-30
[house of einherjar] tinypad
2019-04-30
Mit6.828(一、实验环境准备)
2019-04-30
how2heap_house_of_einherjar
2019-04-30
[house of force] bcloud
2019-04-30
密码学-绪论(一)
2019-04-30
密码学-数学基础(二)
2019-04-30
密码学-对称加密算法(三)
2019-04-30
密码学-对称密钥的应用(四)
2019-04-30
密码学-公钥密码算法(五)
2019-04-30
密码学-消息认证和散列函数(六)
2019-04-30
密码学-密钥管理技术(七)
2019-04-30
密码学-数字签名和认证协议(八)
2019-04-30