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

河源正规网站建设价格广东省深圳市公司

河源正规网站建设价格,广东省深圳市公司,做微商推广有哪些好的分类信息网站,wordpress图形验证码目录 前言 接口考虑 实现的思路 前言 笔者这段时间沉迷于给我的下位机I.MX6ULL做桌面,这里抽空更新一下QT的东西。这篇文章是跟随CCMoveWidget一样的文章,尝试分享自己如何书写这份代码的思考的过程 接口考虑 笔者不太想使用继承的方式重新写我们的…

目录

前言

接口考虑

实现的思路


前言

笔者这段时间沉迷于给我的下位机I.MX6ULL做桌面,这里抽空更新一下QT的东西。这篇文章是跟随CCMoveWidget一样的文章,尝试分享自己如何书写这份代码的思考的过程

接口考虑

笔者不太想使用继承的方式重新写我们的QStackWidget,一方面,他实在是没办法更好的融入我的其他项目,很多地方我需要重新大规模的替换原先的代码,替换这个事情在软件开发还是存在一定的风险的。因此笔者选择做加法——让QStackWidget可以做动画(不需要的时候直接不使用接口函数即可)

总的来讲,笔者做出了这些抽象

#ifndef STACKPAGE_SWITCHER_ANIMATION_H
#define STACKPAGE_SWITCHER_ANIMATION_H
#include <QObject>
class QStackedWidget;
​
struct StackpageSwitcherAnimation : public QObject
{Q_OBJECT
public:explicit StackpageSwitcherAnimation(QObject* parent = nullptr) : QObject(parent){}
​struct AnimationInfo{int     new_index;bool    toLeft;int     animation_duration{400};};
​static void process_animations(QStackedWidget* binding_widget,AnimationInfo* animation_info);
};
​
#endif // STACKPAGE_SWITCHER_ANIMATION_H

可以看到还是很简单的一份接口,下面我来说一说实现

实现的思路

基本的思路非常的简单,就是使用QPropertyAnimation和其派生的组动画,将我们的新一页按照方向放置在现有页的左侧或者是右侧(这里toLeft的作用就是在这里),我们将新的一页放置到外侧且隐藏后,对两者都做动画就行了。

#include "stackpage_switcher_animation.h"
#include <QPropertyAnimation>
#include <QStackedWidget>
#include <QParallelAnimationGroup>
​
void StackpageSwitcherAnimation::process_animations(QStackedWidget* binding_widget, AnimationInfo* animation_info)
{QWidget *currentPage = binding_widget->currentWidget();QWidget *nextPage = binding_widget->widget(animation_info->new_index);
​int moving_width = animation_info->toLeft ? binding_widget->width() : -binding_widget->width();nextPage->move(moving_width, 0);nextPage->show();
​/* moves out */QPropertyAnimation *animCurrent = new QPropertyAnimation(currentPage, "pos");animCurrent->setDuration(300);animCurrent->setStartValue(currentPage->pos());animCurrent->setEndValue(QPoint(-moving_width, 0));
​/* moves in */QPropertyAnimation *animNext = new QPropertyAnimation(nextPage, "pos");animNext->setDuration(300);animNext->setStartValue(nextPage->pos());animNext->setEndValue(QPoint(0, 0));
​QParallelAnimationGroup *group = new QParallelAnimationGroup(binding_widget);group->addAnimation(animCurrent);group->addAnimation(animNext);
​connect(group, &QParallelAnimationGroup::finished, binding_widget, [=]() {binding_widget->setCurrentWidget(nextPage);currentPage->move(0, 0); // 复位旧页面});
​group->start(QAbstractAnimation::DeleteWhenStopped);
}

QParallelAnimationGroup在这里还是很简单的意思,那就是保证动画的同步开始和同步的结束。

这份代码是笔者目前用在项目中的,您可以自行更改学习研究!以上!

http://www.dtcms.com/a/435268.html

相关文章:

  • Core Speech Kit简介
  • 【OTA专题】3.实现简单的boot和APP程序逻辑
  • 营销单页模板网站怎么买网站域名
  • 织梦做商城网站wordpress 自建邮件
  • 小江网站建设必须重视的问题之一
  • Bella Beauty WordPress Theme — Aesthetic Medical Clinic
  • Java_钻石操作符详解
  • 网站做qq微信微博登录爱做的小说网站
  • 大文件推送到git仓库
  • 对招聘网站页面设计做建议wordpress主题cute
  • Spring cloud快速入门
  • STM32 智能垃圾桶项目笔记(五):语音合成模块(SYN6288)配置与语音播报实现
  • 移动互联网开发应聘四川网站营销seo费用
  • 找北京赛车网站开发wordpress 自定义页面
  • MATLAB信号处理实用指南:从入门到精通
  • 成都住建局官网报名入口网址兴安盟seo
  • 中国建设银行手机网站下载安装托管的服务器如何做网站
  • P13977题解
  • 网络推广岗位职责和任职要求成都做整站优化
  • DAY 38 Dataset和Dataloader类 - 2025.10. 2
  • Privacy Eraser(隐私保护软件)多语便携版
  • C4D R20新增功能概述及体积对象SDF类型深度解析
  • 上海做网站公司推荐简单网上书店网站建设php
  • HarmonyOS应用开发深度解析:ArkTS语法精要与UI组件实践
  • 北京示范校建设网站wordpress快速发布
  • 常用网站布局土巴兔这种网站怎么做
  • toLua[四] Examples 03_CallLuaFunction分析
  • 建设景区网站推文企业网站排名怎么优化
  • 汽车信息安全测试与ISO/SAE 21434标准
  • Hadoop HA 集群安装配置