我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Qt+QWidget实现简约美观的加载动画

短信预约 C/C++-IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Qt+QWidget实现简约美观的加载动画

这篇文章将为大家详细讲解有关Qt+QWidget实现简约美观的加载动画,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Qt+QWidget实现简约美观的加载动画

1. 创建一个QWidget小部件

首先,创建一个QWidget小部件作为动画的容器:

QWidget *widget = new QWidget;
widget->setFixedSize(200, 200);

2. 定义动画曲线

为动画创建一条自定义曲线,控制小部件的移动和形状变化:

QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
animation->setTimeLine(new QTimeLine(1000));

3. 设置小部件的属性

为小部件设置动画属性,包括位置、大小和形状:

animation->setPosAt(0, QPointF(100, 100));
animation->setPosAt(0.5, QPointF(100, 200));
animation->setPosAt(1, QPointF(200, 200));

animation->setRectAt(0, QRectF(100, 100, 50, 50));
animation->setRectAt(0.5, QRectF(100, 200, 50, 50));
animation->setRectAt(1, QRectF(200, 200, 50, 50));

4. 启动动画

启动动画时间线以开始动画:

animation->timeLine()->start();

5. 添加小部件到布局

将小部件添加到布局中以显示动画:

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(widget);
setLayout(layout);

6. 自适应缩放

为了使动画在不同分辨率的屏幕上自适应缩放,可以监听窗口大小的变化并相应调整小部件的大小:

connect(this, &QMainWindow::sizeChanged, [this](const QSize &size) {
    widget->setFixedSize(size.width() / 2, size.height() / 2);
});

7. 动画细节

  • 时间线持续时间:1000毫秒
  • 动画曲线:自定义曲线,从中心移动到右上角并改变大小
  • 小部件形状:矩形,在动画过程中改变大小和位置

8. 优化动画性能

为了优化动画性能,可以使用以下技术:

  • 禁用小部件的更新,直到动画完成
  • 使用QGraphicsItemAnimation代替QWidget动画
  • 使用硬件加速(如果可用)

9. 扩展和自定义

该动画可以根据需要进行扩展和自定义:

  • 添加更多动画曲线以创建不同的效果
  • 更改动画时间线持续时间
  • 修改小部件的形状和大小

示例代码

完整的示例代码如下:

#include <QApplication>
#include <QGraphicsItemAnimation>
#include <QMainWindow>
#include <QTimeLine>
#include <QVBoxLayout>
#include <QWidget>

class LoadingAnimation : public QMainWindow {
public:
    LoadingAnimation() {
        QWidget *widget = new QWidget;
        widget->setFixedSize(200, 200);

        QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
        animation->setTimeLine(new QTimeLine(1000));

        animation->setPosAt(0, QPointF(100, 100));
        animation->setPosAt(0.5, QPointF(100, 200));
        animation->setPosAt(1, QPointF(200, 200));

        animation->setRectAt(0, QRectF(100, 100, 50, 50));
        animation->setRectAt(0.5, QRectF(100, 200, 50, 50));
        animation->setRectAt(1, QRectF(200, 200, 50, 50));

        QVBoxLayout *layout = new QVBoxLayout;
        layout->addWidget(widget);
        setLayout(layout);

        connect(this, &QMainWindow::sizeChanged, [this](const QSize &size) {
            widget->setFixedSize(size.width() / 2, size.height() / 2);
        });

        animation->timeLine()->start();
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    LoadingAnimation animation;
    animation.show();
    return app.exec();
}

以上就是Qt+QWidget实现简约美观的加载动画的详细内容,更多请关注编程学习网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Qt+QWidget实现简约美观的加载动画

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Qt+QWidget实现简约美观的加载动画

本教程详细讲解了如何使用Qt和QWidget实现简约美观的加载动画。通过创建QWidget小部件并定义自定义曲线,可以控制小部件的移动和形状变化。在文章中,您将了解如何设置小部件的属性、启动动画时间线以及添加小部件到布局。为了适应不同分辨率的屏幕,还介绍了自适应缩放技术。此外,本文还提供了优化动画性能的建议,并演示了如何扩展和自定义动画。文章结尾附上了一个完整的示例代码,供您参考。
Qt+QWidget实现简约美观的加载动画
2024-04-02

如何使用纯css实现简单加载动画效果

小编给大家分享一下如何使用纯css实现简单加载动画效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图思路CSS 用于修饰 HTML,所以即便是再简单的效果,
2023-06-14

CSS怎么实现心形加载的动画

本文将为大家详细介绍“CSS怎么实现心形加载的动画”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“CSS怎么实现心形加载的动画”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知
2023-06-08

Android实现跳动的小球加载动画效果

先来看看效果图跳动的小球做这个动画,需掌握: 1、属性动画 2、Path类、Canvas类 3、贝塞尔曲线 4、SurfaceView用法 5、自定义attr属性 6 、架构: 状态模式,控制
2022-06-06

使用css实现android系统的loading加载动画

小编给大家分享一下使用css实现android系统的loading加载动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!web常用的loading图标有2种, 一
2023-06-08

layui table数据加载动画的自定义与实现(自定义layui table数据加载动画的技巧)

layuitable提供数据加载动画,可自定义以匹配场景或风格。自定义技巧:使用CSS定义加载图标或动画效果,并将其应用于表容器。使用JavaScript创建自定义加载动画函数,并将其指定在表配置中。集成第三方库简化动画创建。实施步骤:创建自定义动画。覆盖默认加载动画。加载数据时,指定的加载动画将显示。
layui table数据加载动画的自定义与实现(自定义layui table数据加载动画的技巧)
2024-04-02

CSS Positions布局实现网页加载动画的技巧

在当今互联网时代,网页设计越来越注重用户体验,其中网页加载动画是吸引用户注意力的重要元素之一。而CSS Positions布局是一种常用的网页布局方式,通过合理运用它,可以实现网页加载动画的效果。本文将介绍如何利用CSS Positions
2023-10-21

CSS实现加载动画效果的技巧和方法

随着互联网的发展,加载速度成为了用户体验的重要指标之一。为了提升页面加载时的用户体验,我们通常会使用加载动画效果来增加页面的互动性和吸引力。而CSS作为前端开发中的重要技术之一,提供了许多实现加载动画效果的技巧和方法。本文将介绍几种常见的C
2023-10-21

Android自定义view实现阻尼效果的加载动画

效果:需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又称减幅振动、衰减振动。[1] 不论是弹簧振
2022-06-06

iOS仿抖音视频加载动画效果的实现方法

前言这几天一直跟开源的抖音demo斗智斗勇,今天跟大家分享的是抖音中或者快手中加载视频的动画,这个加载效果还是挺实用,下面话不多说了,来随着小编一起学习学习吧 上图看成品实现原理首先我创建一个视图@interface ViewControl
2022-05-22

Android仿支付宝笑脸刷新加载动画的实现代码

看到支付宝的下拉刷新有一个笑脸的动画,因此自己也动手实现一下。效果图如下:一、总体思路 1、静态部分的笑脸。 这一部分的笑脸就是一个半圆弧,加上两颗眼睛,这部分比较简单,用于一开始的展示。 2、动态笑脸的实现。 2.1、先是从底部有一个圆形
2022-06-06

c# WPF中自定义加载时怎么实现带动画效果的Form和FormItem

本篇内容主要讲解“c# WPF中自定义加载时怎么实现带动画效果的Form和FormItem”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c# WPF中自定义加载时怎么实现带动画效果的Form和F
2023-06-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录