Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
生活随笔
收集整理的這篇文章主要介紹了
Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
官方解析
博主例子
官方解析
easingCurve:QEasingCurve
這個屬性保留了動畫的緩和曲線。
他定義了緩和取消,默認情況下,使用線性緩和曲線,產生線性插入值。下面舉出其他曲線的例子:
QEasingCurve::InCirc 這個屬性提供了圓形入口曲線。
QEasingCurve::InOutElastic這個屬性為插入值提供了彈性效果。
QVarantAnimation將使用QEasingCure::valueForProgress()將把動畫的“常規進度”(currentTime/totalDuration)轉化為動畫使用的實際有效進度。當interpolated()被調用時這將會是一個有效的進度。所以keyValues里的步驟將與有效進度相關聯。
緩和曲線與插入器一起使用,interpolated()這個虛函數與動畫的持續時間將控制當前動畫進度改變的值。
博主例子
使用QEasingCurve::InOutSine實現動態旋轉
本次例子很有趣!運行截圖如下:
源碼如下
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官方解析及实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-视图/模型以及过滤代理模型
- 下一篇: 反汇编基础-寄存器及内存