Qt QWidget实现图片旋转动画

 更新时间:2024年12月28日 09:10:37   作者:小灰灰搞电子  
这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、效果展示

二、源码分享

本例程通过QGraphicsView实现svg格式图片旋转。

.hpp

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QGraphicsSvgItem>
#include <QGraphicsScene>
#include <QTimer>
#include <QPropertyAnimation>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    Ui::MainWindow *ui;

    QGraphicsSvgItem  *graphItem;
    QGraphicsScene *graphScene;
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->graphScene = new QGraphicsScene();

    this->ui->graphicsView->setScene(this->graphScene);


    this->graphItem = new QGraphicsSvgItem( ":/image/running.svg" );

    this->graphItem->setScale(0.5);

    QRectF boundingRect = this->graphItem->boundingRect();
    this->graphItem->setTransformOriginPoint(boundingRect.width() / 2, boundingRect.height() / 2);

    graphScene->addItem( this->graphItem );

    this->graphItem->setRotation(45);

    // 创建一个QPropertyAnimation对象来控制旋转属性
    QPropertyAnimation* rotationAnimation = new QPropertyAnimation(this->graphItem, "rotation");

    // 设置动画的起始值和结束值
    rotationAnimation->setStartValue(0);
    rotationAnimation->setEndValue(360);

    // 设置动画持续时间(以毫秒为单位)
    rotationAnimation->setDuration(3000);

    // 设置动画循环次数(-1表示无限循环)
    rotationAnimation->setLoopCount(-1);

    // 启动动画
    rotationAnimation->start();

    this->ui->graphicsView->installEventFilter(this);
    this->ui->graphicsView->centerOn(this->graphItem);
}

MainWindow::~MainWindow()
{
    delete ui;
}

以上就是Qt QWidget实现图片旋转动画的详细内容,更多关于Qt QWidget旋转的资料请关注脚本之家其它相关文章!

相关文章

  • C++嵌套类与局部类详细解析

    C++嵌套类与局部类详细解析

    从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定
    2013-09-09
  • C++ 写的UrlEncode和UrlDecode实例

    C++ 写的UrlEncode和UrlDecode实例

    这篇文章主要介绍了C++ 写的UrlEncode和UrlDecode实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 一起来看看C++STL容器之string类

    一起来看看C++STL容器之string类

    这篇文章主要为大家详细介绍了C++STL容器之string类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 使用VS2019编译CEF2623项目的libcef_dll_wrapper.lib的方法

    使用VS2019编译CEF2623项目的libcef_dll_wrapper.lib的方法

    这篇文章主要介绍了使用VS2019编译CEF2623项目的libcef_dll_wrapper.lib的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • C/C++中组合详解及其作用介绍

    C/C++中组合详解及其作用介绍

    这篇文章主要介绍了C/C++中组合的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • c++实现合并文件以及拆分实例代码

    c++实现合并文件以及拆分实例代码

    这篇文章主要介绍了c++实现合并文件以及拆分实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Qt利用QScroller实现home界面滑动效果

    Qt利用QScroller实现home界面滑动效果

    这篇文章主要为大家详细介绍了Qt如何利用QScroller实现home界面滑动效果,文中的实现过程讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-11-11
  • C/C++根据年月日计算星期几(蔡勒公式篇)

    C/C++根据年月日计算星期几(蔡勒公式篇)

    这篇文章主要给大家介绍了关于C/C++根据年月日计算星期几(蔡勒公式篇)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++实现字符串类型相互转换的代码示例

    C++实现字符串类型相互转换的代码示例

    在C/C++编程中,字符串是非常基础且常用的数据类型,但是由于不同的编程语言或标准库可能采用不同的字符串类型,因此在不同的应用场景下可能需要进行字符串类型的相互转换,本文将介绍如何在C/C++中将char*,std::string,QString,CString/MFC String相互转换
    2023-06-06
  • C语言菜鸟基础教程之加法

    C语言菜鸟基础教程之加法

    C语言中运算符和表达式数量之多, 在高级语言中是少见的。正是丰富的运算符和表达式使C语言功能十分完善。 这也是C语言的主要特点之一。今天我们来看看加法运算
    2017-10-10

最新评论