欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Qt實現(xiàn)旋轉(zhuǎn)動畫效果

 更新時間:2024年11月19日 11:16:50   作者:姆路  
這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)旋轉(zhuǎn)動畫效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

使用QPropertyAnimation類綁定對應的屬性后

就可以給這個屬性設置對應的動畫

//比如自定義了屬性
Q_PROPERTY(int rotation READ rotation WRITE setRotation)
 
 
//給這個屬性加動畫效果
//參數(shù)1:誰要加動畫效果
//參數(shù)2:哪個屬性加動畫效果
//參數(shù)3:parent
m_animation = new QPropertyAnimation(this, "rotation", this);
 
m_animation -> setDuration(2000); //設置動畫時長
m_animation -> setStartValue(0); //設置開始值
m_animation -> setEndValue(360); //設置結束值
m_animation -> setLoopCount(3); //設置循環(huán)次數(shù)
m_animation -> start(); //開啟動畫

動畫開啟后,就會不停的調(diào)用setRotation(屬性write函數(shù))去修改這個屬性的值

我們在setRotation這個函數(shù)中修改屬性的值后,調(diào)用update()

于是QPropertyAnimation就會使得對應的控件不停的重繪,就產(chǎn)生了動畫效果。

舉例:

旋轉(zhuǎn)的矩形

完整代碼 

#ifndef WIDGET_H
#define WIDGET_H
 
#include<QPropertyAnimation>
#include<QPainter>
#include <QWidget>
 
 
 
class RotatingWidget : public QWidget {
    Q_OBJECT
    //QPropertyAnimation類要搭配Q_PROPERTY定義的屬性來使用
    //本質(zhì)上就是QPropertyAnimation在不停的修改對應屬性的值,然后不停的重繪,看起來像動的效果
    Q_PROPERTY(int rotation READ rotation WRITE setRotation)
public:
    RotatingWidget(QWidget *parent = nullptr): QWidget(parent), m_rotation(0) {
        m_animation = new QPropertyAnimation(this, "rotation", this);
        m_animation->setDuration(2000);//設置動畫時長
        m_animation->setStartValue(0);//設置開始值
        m_animation->setEndValue(360);//設置結束值
        m_animation->setLoopCount(3);//設置循環(huán)次數(shù)
        //還可以設置動畫的效果曲線,是勻速還是先快后慢等
        m_animation->start();//開啟動畫
    }
    int rotation() const {
        return m_rotation;
    }
public slots:
    void setRotation(int angle) {
        m_rotation = angle;
        //屬性修改后就進行重繪
        update();
    }
protected:
    void paintEvent(QPaintEvent *event) override {
        QWidget::paintEvent(event);
 
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);
        painter.translate(width() / 2, height() / 2);
        painter.rotate(m_rotation);
        painter.translate(-width() / 2, -height() / 2);
        // 繪制旋轉(zhuǎn)的圖形,也可以是圖片
        painter.setPen(QPen(Qt::red));
        painter.drawRect(width() / 2-50, height() / 2-50, 100, 100);
    }
private:
    QPropertyAnimation *m_animation;
    int m_rotation;
};
#endif // WIDGET_H

到此這篇關于使用Qt實現(xiàn)旋轉(zhuǎn)動畫效果的文章就介紹到這了,更多相關Qt旋轉(zhuǎn)動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c++超細致講解引用

    c++超細致講解引用

    在我們?nèi)粘5纳钪忻總€人都或多或少存在一個"外號",例如《西游記》中孫悟空就有諸多外號:美猴王,孫行者,齊天大圣等等。那么在C++中,也可以給一個已經(jīng)存在的變量取別名,這就是引用。那么接下來深入來探討一下引用
    2022-05-05
  • C語言模擬擲骰子游戲

    C語言模擬擲骰子游戲

    這篇文章介紹了C語言模擬擲骰子游戲的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。需要的朋友可以收藏下
    2021-11-11
  • 排列組合總結:將結果進行輸出的實現(xiàn)方法

    排列組合總結:將結果進行輸出的實現(xiàn)方法

    本篇文章關于排列組合的總結,對結果進行輸出做了介紹。需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)稀疏矩陣的壓縮存儲實例

    C++實現(xiàn)稀疏矩陣的壓縮存儲實例

    本篇文章主要介紹了C++實現(xiàn)稀疏矩陣的壓縮存儲實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • C++第三方日志庫Glog的安裝與使用介紹

    C++第三方日志庫Glog的安裝與使用介紹

    這篇文章主要介紹了C++第三方日志庫Glog的安裝與使用介紹,本文配置所采用的環(huán)境為Visual?Studio2017,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • C++函數(shù)重載介紹與原理詳解

    C++函數(shù)重載介紹與原理詳解

    這篇文章主要為大家介紹了C++函數(shù)重載介紹與原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 基于list循環(huán)刪除元素,迭代器失效的問題詳解

    基于list循環(huán)刪除元素,迭代器失效的問題詳解

    下面小編就為大家?guī)硪黄趌ist循環(huán)刪除元素,迭代器失效的問題詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++實現(xiàn)掃雷經(jīng)典小游戲

    C++實現(xiàn)掃雷經(jīng)典小游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)掃雷經(jīng)典小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言實現(xiàn)搶紅包算法

    C語言實現(xiàn)搶紅包算法

    這篇文章主要為大家詳細介紹了C語言搶紅包算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 使用C++開發(fā)一個串口讀寫軟件的實現(xiàn)步驟

    使用C++開發(fā)一個串口讀寫軟件的實現(xiàn)步驟

    這篇文章主要介紹了使用xmake(一個項目管理工具兼包管理工具)和asio2(一個asio的框架,可以實現(xiàn)輕松各種網(wǎng)絡應用,一般支持tcp,udp,http,websocket,rpc,ssl,icmp,serial_port.)來快速的開發(fā)個串口讀寫軟件(整合例程),需要的朋友可以參考下
    2025-04-04

最新評論