当前位置: 首页 > wzjs >正文

企业官网的重要性seo点击排名软件哪里好

企业官网的重要性,seo点击排名软件哪里好,衣联网和一起做网站 哪家强,长沙专业网站建设公司排名文章目录 用 Qt 动画制作炫酷的界面效果:属性动画教程动画简介:为什么要用动画?Qt 动画的基本概念:QPropertyAnimation什么是属性动画?QPropertyAnimation 的核心方法1. setTargetObject(QObject *object)2. setProper…

文章目录

  • 用 Qt 动画制作炫酷的界面效果:属性动画教程
    • 动画简介:为什么要用动画?
    • Qt 动画的基本概念:`QPropertyAnimation`
      • 什么是属性动画?
      • `QPropertyAnimation` 的核心方法
        • 1. `setTargetObject(QObject *object)`
        • 2. `setPropertyName(const QByteArray &name)`
        • 3. `setDuration(int msec)`
        • 4. `setEndValue(const QVariant &value)`
        • 5. `start()`
      • 动画的工作流程
    • 示例:旋转动画实现
      • 完整代码解析
      • 代码解析:
        • 1. **初始化动画**
        • 2. **设置动画目标值**
        • 3. **触发动画并重绘**
        • 4. **绘制旋转效果**
    • 总结:动画的使用和效果

用 Qt 动画制作炫酷的界面效果:属性动画教程

Qt 是一个非常强大的图形界面框架,不仅能帮助你制作漂亮的界面,还能让你的应用变得更加生动、交互性更强。在本篇博客中,我们将深入学习如何使用 Qt 动画来让界面元素动起来。通过 QPropertyAnimation,你可以让控件的属性(如旋转角度、透明度、大小等)平滑过渡,制作出流畅的动画效果。

动画简介:为什么要用动画?

动画能让你的应用更加吸引人,提供更好的用户体验。在以下几个方面,动画都可以为你的应用加分:

  • 增强用户体验:动画能够使界面更加生动,提升整体的互动性,避免界面显得死板或者突兀。
  • 吸引用户注意力:通过动画,你可以将用户的注意力引导到某些重要的界面元素上,例如按钮、提示信息等。
  • 改善界面美感:动画能够使得控件变化过程更加自然,比如按钮的点击效果,控件的显示隐藏,背景的渐变等。

Qt 提供了强大的动画框架,允许开发者对控件的属性进行平滑过渡。通过使用动画,用户会感受到应用更具现代感和交互感。

Qt 动画的基本概念:QPropertyAnimation

什么是属性动画?

属性动画(Property Animation)是 Qt 中的一种常用动画类型,它允许你在一定的时间内平滑地修改一个控件的属性值。例如,你可以让一个按钮从屏幕左边移动到右边,或者让一个图片在屏幕上旋转,所有这些都可以通过动画来完成。

QPropertyAnimation 是 Qt 提供的类,用来对控件的属性进行动画处理。你只需要指定控件、动画持续时间、属性目标值等,Qt 会自动处理属性值的过渡和控件的重绘。

QPropertyAnimation 的核心方法

1. setTargetObject(QObject *object)

这个方法用来指定动画的目标对象,即要操作的控件或对象。

2. setPropertyName(const QByteArray &name)

这个方法指定要执行动画的属性名称,比如你可以为 rotation 属性(旋转角度)或者 opacity 属性(透明度)设置动画。

3. setDuration(int msec)

这个方法设置动画的持续时间,以毫秒为单位。比如设置为 1000 毫秒(即 1 秒),表示动画会在 1 秒内完成。

4. setEndValue(const QVariant &value)

这个方法设置动画的目标值。动画会逐步将属性值从起始值变化到目标值。

5. start()

启动动画。调用这个方法后,动画就会开始执行,直到达到目标值。

动画的工作流程

  1. 设置初始值和目标值:你需要设置动画的起始值(通常是当前属性值)和目标值(动画结束时的属性值)。
  2. 设置动画时间和曲线:你可以指定动画的持续时间、缓动效果等。
  3. 启动动画:调用 start() 方法开始动画,动画会根据设定的时长和缓动曲线逐渐改变属性值。
  4. 重绘控件:动画会逐步修改控件的属性值,并在每次属性更新时触发控件的重绘(通过 paintEvent())。

示例:旋转动画实现

我们来创建一个简单的旋转动画,旋转一个箭头图标,随着动画的进行,图标会平滑地从一个角度旋转到另一个角度。

完整代码解析

#include "RootContactlem.h"
#include <QPainter>
#include <QPropertyAnimation>RootContactlem::RootContactlem(bool hasArrow, QWidget *parent): QLabel(parent), hasArrow(hasArrow), rotation(0), an(nullptr)
{init();
}RootContactlem::~RootContactlem() {}void RootContactlem::init()
{setFixedHeight(32);   // 固定控件高度为 32setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);// 创建一个 QPropertyAnimation 动画,绑定到 "rotation" 属性an = new QPropertyAnimation(this, "rotation", this);an->setDuration(30);  // 动画持续时间为 30 毫秒an->setEasingCurve(QEasingCurve::InQuad);  // 设置动画的缓动效果
}void RootContactlem::setText(const QString &text)
{titleText = text;update();  // 文本改变时,触发重绘
}void RootContactlem::setExpanded(bool expand)
{// 设置动画的目标值:如果展开,旋转到 90 度,否则恢复到 0 度if (expand) {an->setEndValue(90);  // 旋转到 90 度} else {an->setEndValue(0);   // 恢复到 0 度}an->start();  // 启动动画
}void RootContactlem::paintEvent(QPaintEvent *event)
{QLabel::paintEvent(event);  // 调用默认的绘制行为// 绘制文本QPainter p1(this);p1.setRenderHint(QPainter::TextAntialiasing, true);  // 启用文本抗锯齿QFont font;font.setPointSize(10);  // 设置字体大小p1.setFont(font);p1.drawText(24, 0, width() - 24, height(), Qt::AlignLeft | Qt::AlignVCenter, titleText);// 绘制箭头if (hasArrow) {QPixmap arrow(":/Resources/MainWindow/arrow.png");QPixmap pixmap(arrow.size());pixmap.fill(Qt::transparent);  // 填充透明背景QPainter p2(&pixmap);p2.setRenderHint(QPainter::SmoothPixmapTransform, true);  // 启用抗锯齿// 旋转箭头p2.translate(pixmap.width() / 2, pixmap.height() / 2);  // 将原点移动到图片中心p2.rotate(rotation);  // 旋转图像p2.drawPixmap(0 - pixmap.width() / 2, 0 - pixmap.height() / 2, arrow);  // 绘制旋转后的箭头p1.drawPixmap(6, (this->height() - pixmap.height()) / 2, pixmap);  // 将箭头绘制到控件上}
}int RootContactlem::getRotation()
{return rotation;  // 获取当前的旋转角度
}void RootContactlem::setRotation(int r)
{rotation = r;  // 设置旋转角度update();  // 更新控件的显示,触发重绘
}

代码解析:

1. 初始化动画

init() 方法中,我们首先创建了一个 QPropertyAnimation 对象:

an = new QPropertyAnimation(this, "rotation", this);

这里的 "rotation" 表示我们要对控件的 rotation 属性应用动画。在 QPropertyAnimation 中,动画是通过属性名来识别的。

然后,我们设置了动画的持续时间为 30 毫秒,设置了动画的缓动曲线为 QEasingCurve::InQuad,即动画开始时较慢,接着加速:

an->setDuration(30);
an->setEasingCurve(QEasingCurve::InQuad);
2. 设置动画目标值

setExpanded() 函数中,我们根据是否展开,分别设置了动画的目标值为 90 或 0:

if (expand) {an->setEndValue(90);  // 旋转到 90 度
} else {an->setEndValue(0);   // 恢复到 0 度
}

setEndValue(90) 表示动画结束时 rotation 属性的值应该是 90 度,setEndValue(0) 则表示动画结束时 rotation 的值应该回到 0 度。

3. 触发动画并重绘

通过调用 start(),我们启动了动画,rotation 属性会逐步变化,从当前值过渡到目标值(90 或 0)。每次 rotation 更新时,setRotation() 会被调用,更新控件的旋转角度,并触发 update() 来进行重绘。

an->start();
4. 绘制旋转效果

paintEvent() 中,我们使用 QPainter 来绘制文本和旋转的箭头:

p2.translate(pixmap.width() / 2, pixmap.height() / 2);  // 将坐标系的原点移动到箭头中心
p2.rotate(rotation);  // 根据当前的 rotation 值旋转箭头

这里我们先通过 translate() 方法将坐标系的原点移动到箭头图标的中心,然后使用 rotate() 来旋转箭头。

总结:动画的使用和效果

在 Qt 中,QPropertyAnimation 是实现控件动画的主要工具。通过 QPropertyAnimation,你可以轻松地为控件的属性添加动画效果,使得界面更加动感和互动。在本例中,我们使用动画实现了控件的旋转效果。通过动画的平滑过渡,用户能够感受到更加自然和流畅的界面交互。

动画不仅能提升界面的美感,还能增加用户对应用的好感度。你可以利用 Qt 动画实现多种效果,如旋转、移动、透明度变化等。掌握了属性动画的使用,你将能够创造更加引人入胜的界面。

希望通过这篇博客,你对 Qt 动画有了更加清晰的理解。如果你有更多的动画需求,欢迎深入学习 Qt 的动画框架,探索更复杂的动画效果。

http://www.dtcms.com/wzjs/79407.html

相关文章:

  • 搜索网站怎么做的平面设计
  • 怎么在网站做推广和宣传如何建网站要什么条件
  • 苏州网站推广排名深圳百度seo代理
  • saas建站 cms长沙百度网站快速排名
  • wordpress搜索间隔时间seo综合查询中的具体内容有哪些
  • 旅行网站建设论文摘要seo关键词搜索优化
  • wordpress post slug codex北京seo网站推广
  • 广州建造网站公司网站推广优化怎样
  • 有需求或做任务赚钱的网站么网站权重查询工具
  • 淄博网站建设 华夏国际互联网广告推广公司
  • 做网站设计管理需要什么知识北京百度推广优化公司
  • 有了网站怎么做app吗网店推广网站
  • 苏州找工作cpu游戏优化加速软件
  • 百度商桥怎么添加到网站百度指数网页版
  • 高清做网站插图短视频营销的发展趋势
  • 做动画网站微信社群营销怎么做
  • 新站整站优化站长工具seo综合查询访问
  • 公司制作网站怎么做谷歌网站优化
  • 浏览网站时弹出的广告是谁给做的吉林seo管理平台
  • 类似享设计的网站广告软文200字
  • 网站开发部门工作职责搜狗网址大全
  • 糖果果屋网站建设规划书视频推广
  • 大连哪个公司做网站开发的百度商业平台官网
  • 网站建设需要考虑因素网络服务包括哪些内容
  • wordpress置顶文章 调用网站seo服务商
  • 免费的独立站建站工具推广方案范例
  • wordpress 3.9.12天津做优化好的公司
  • 网站建设 小程序十大经典事件营销案例分析
  • 私人让做彩票网站吗百度指数怎么分析
  • 内蒙古兴泰建设集团信息化网站seo管理与优化期末试题