Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
目錄
官方解析
博主例子
官方解析
easingCurve:QEasingCurve
這個(gè)屬性保留了動(dòng)畫(huà)的緩和曲線。
他定義了緩和取消,默認(rèn)情況下,使用線性緩和曲線,產(chǎn)生線性插入值。下面舉出其他曲線的例子:
QEasingCurve::InCirc 這個(gè)屬性提供了圓形入口曲線。
QEasingCurve::InOutElastic這個(gè)屬性為插入值提供了彈性效果。
QVarantAnimation將使用QEasingCure::valueForProgress()將把動(dòng)畫(huà)的“常規(guī)進(jìn)度”(currentTime/totalDuration)轉(zhuǎn)化為動(dòng)畫(huà)使用的實(shí)際有效進(jìn)度。當(dāng)interpolated()被調(diào)用時(shí)這將會(huì)是一個(gè)有效的進(jìn)度。所以keyValues里的步驟將與有效進(jìn)度相關(guān)聯(lián)。
緩和曲線與插入器一起使用,interpolated()這個(gè)虛函數(shù)與動(dòng)畫(huà)的持續(xù)時(shí)間將控制當(dāng)前動(dòng)畫(huà)進(jìn)度改變的值。
博主例子
使用QEasingCurve::InOutSine實(shí)現(xiàn)動(dòng)態(tài)旋轉(zhuǎn)
本次例子很有趣!運(yùn)行截圖如下:
源碼如下
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();} }?
總結(jié)
以上是生活随笔為你收集整理的Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt工作笔记-视图/模型以及过滤代理模型
- 下一篇: 反汇编基础-寄存器及内存