QT之QPropertyAnimation动画类的介绍

2023-10-05 23:04

本文主要是介绍QT之QPropertyAnimation动画类的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 简介
    • 成员函数
    • 例程

简介

QPropertyAnimation是Qt框架中的一个类,它用于在给定时间间隔内对QObject的属性进行动画化的平滑过渡。可以使用QPropertyAnimation实现各种动画效果,如淡入淡出、位移、旋转等。

QPropertyAnimation的初始化需要三个参数:

QPropertyAnimation(QObjecttarget,constQByteArray&propertyName,QObjectparent=nullptr)。第一个参数是目标对象,它是要实施动画的对象。第二个参数是描述字符串常量,它定义了要动画化的属性名称。最后一个参数是可选的父对象。

成员函数

1)void setTargetObject(QObject *target)
设置目标对象。

2)QObject *targetObject() const
返回目标对象。

3)void setPropertyName(const QByteArray &propertyName)
设置属性名称。

4)QByteArray propertyName() const
返回属性名称。

5)void setValue(const QVariant &value)
设置属性的最终值。

6)QVariant value() const
返回属性的最终值。

7)void setFromValue(const QVariant &value)
设置属性的起始值。

8)QVariant fromValue() const
返回属性的起始值。

9)void setDuration(int duration)
设置动画的持续时间。

10)int duration() const
返回动画的持续时间。

11)void setEasingCurve(const QEasingCurve &easing)
设置动画的缓动曲线。

12)QEasingCurve easingCurve() const
返回动画的缓动曲线。

13)void setLoopCount(int count)
设置动画的循环次数。

14)int loopCount() const
返回动画的循环次数。

15)void setLooping(bool enable)
设置动画是否循环播放。

16)bool isLooping() const
返回动画是否循环播放。

17)void start()
启动动画。

18)void stop()
停止动画。

19)QState state() const
返回动画的状态。

20)void setState(QState state)
设置动画的状态。

21)bool isRunning() const
返回动画是否正在运行。

22)bool isPaused() const
返回动画是否已暂停。

23)bool isStopped() const
返回动画是否已停止。

24)void pause()
暂停动画。

25)void resume()
恢复动画的运行。

26)void reset()
重置动画到初始状态。

27)void seek(int ms)
将动画跳转到指定时间位置。

28)int currentTime() const
返回当前动画的时间位置。

29)int totalTime() const
返回动画的总时间长度。

30)void setDirection(QAbstractAnimation::Direction direction)
设置动画的方向(正向或反向)。

31)QAbstractAnimation::Direction direction() const
返回动画的方向。

32)void setReverseDirection(QAbstractAnimation::Direction direction)
设置反向播放时的动画方向。

33)QAbstractAnimation::Direction reverseDirection() const
返回反向播放时的动画方向。

34)void setInterpolationMode(QAbstractAnimation::InterpolationMode mode)
设置插值模式(线性或平滑)。

35)QAbstractAnimation::InterpolationMode interpolationMode() const
返回插值模式。

36)void setStartValue(const QVariant &value)
设置属性的起始值(与fromValue()相同)。

37)QVariant startValue() const
返回属性的起始值(与fromValue()相同)。

38)void setEndValue(const QVariant &value)
设置属性的最终值(与value()相同)。

39)QVariant endValue() const
返回属性的最终值(与value()相同)。

例程

#include <QApplication>  
#include <QGraphicsObject>  
#include <QPropertyAnimation>  class MyObject : public QGraphicsObject  
{  
public:  MyObject(QObject *parent = nullptr)  : QGraphicsObject(parent)  {  }  QRectF boundingRect() const override  {  return QRectF(0, 0, 50, 50);  }  void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override  {  Q_UNUSED(option);  Q_UNUSED(widget);  painter->drawRect(boundingRect());  }  
};  int main(int argc, char *argv[])  
{  QApplication a(argc, argv);  MyObject object;  QPropertyAnimation animation(&object, "pos");  animation.setStartValue(QPointF(0, 0));  animation.setEndValue(QPointF(100, 100));  animation.setDuration(1000);  animation.start();  return a.exec();  
}

在这个示例中,创建了一个MyObject类,它从QGraphicsObject继承而来。在主函数中,创建了MyObject对象和QPropertyAnimation对象。通过调用QPropertyAnimation的start()方法,启动了动画,使得object的位置属性在1秒内从(0,0)平滑过渡到(100,100)。

这篇关于QT之QPropertyAnimation动画类的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152235

相关文章

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd