2021/03/26:
参考如下:有惯性,有回顶效果;使用手势


QT使用之 :手指滑动后物理惯性滑动-动画的实现,根据不同速度有不同的效果


一、 前言

首先,因为是使用手指滑动,所以控件要求能够支持 touch事件
添加touch事件的思路可以参考之前的文章:
QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理


二、思路

1、思路其实很简单,就是 touch 事件结束之后,让滚动条自己再继续滚动一会就可以了;
2、对于惯性减速的实现,在touch事件开始以及结束的时候,可以获取touch的方向以及速度;
3、动画的实现,使用QTimer间隔一定的时间后,对于当前滑动实现减速 + 滑动的效果

三、实现代码

主要就是定时器的使用~

代码中的startPoint 和 endPoint 依旧是使用QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理中的逻辑,所以得看一下

bool WidgetTouch::touchEndEventProcess(QEvent *event)
{QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);int touchDistance =  qAbs (startPoint.x() - endPoint.x());touchEnd_time =QTime::currentTime();elapsed = touchBegin_time.msecsTo(touchEnd_time);speed = touchDistance * 1000 / elapsed; // 计算当前滑动的速度  单位 sm_rollTime = 20;m_rollTimer->setInterval(m_rollTime);// 增加阈值if (touchDistance >= 10 && elapsed >200){startRoll();}touchEvent->accept();return true;
}// 物理惯性动画效果
void WidgetTouch::startRoll()
{m_rollTimer->start();
}void WidgetTouch::onTimeout()
{everyDistance = speed * m_rollTime / 1000;// 此处的 bar 就是自己定义的 需要滚动的 QScrollBarbar->setValue(bar->value() + everyDistance);if (speed >= 40) {  // 每一次 40 pxspeed -= 40;} else {m_rollTimer->stop();}update();
}

QT使用之 手指滑动 | 物理惯性继续滑动动画的实现,根据不同速度实现不同动画效果相关推荐

  1. 前端也要懂物理 —— 惯性滚动篇

    作者:凹凸曼-吖伟 我们在平时编程开发时,除了需要关注技术实现.算法.代码效率等因素之外,更要把所学到的学科知识(如物理学.理论数学等等)灵活应用,毕竟理论和实践相辅相成.密不可分,这无论是对于我们的 ...

  2. 写了个移动端可滑动(惯性滑动回弹)Vue导航栏组件 ly-tab

    前段时间写了一个移动端的自适应滑动Vue导航栏组件,觉得有一定实用性,大家可能会用得到(当然有些大佬自己写得更好的话就没必要啦),于是前两天整理了一下,目前已经发布到npm和GitHub上了,点我到n ...

  3. QT+OpenCV综合示例:图像混合(滑动条)

    QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...

  4. Android素描算法及实现手指在图片上左右滑动调节图片透明度,最终实现类似调节素描浓度的效果

    一.前期基础知识储备 UI掌握PS这一逆天的软件,可以实现将图片转化为素描或者水彩的效果,以素描为例: 在Photoshop中打开一张人物照片,按下快捷键"Ctrl+Shift+U" ...

  5. iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动

    iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动 在Delegate里面 -(void)scrollViewWillBeginDecelerating: (UIScrol ...

  6. 开发板Linux手指滑动方向,移动应用滑动屏幕方向判断解决方案,JS判断手势方向...

    问题分类 滑动屏幕打开相应功能操作. 问题描述 1.用户手动滑动屏幕,根据滑动的方向,打开相应的功能(如:向上滑摇钱树经验明细,向下滑打开任务明细,向左滑打开聚宝盆物品查看等功能),滑动事件捕获问题. ...

  7. 按钮滑动隐藏,停止滑动显示的动画

    想用tweenAnimation来做 res下新建anim文件夹,添加bottom_slide_in.xml和bottom_slide_out.xml bottom_slide_in.xml 滑入动画 ...

  8. Flutter滑动体验对齐原生-滑动曲线篇

    自从使用了Flutter以来,闲鱼在享受着跨端带来的提效的同时,流畅度一直是困扰了我们许久的问题,也是被外界吐槽得比较多的地方.所以我们在过去半年,重新牵起了流畅度优化这件事情,目标只有一个,那就是拉 ...

  9. scrollview 实现滑动到底部再滑动加载数据的功能

    思路:在滑动基础上添加scrollview到底检测事件 1.首先检测是否滑动 [java] view plaincopy // 滑动加载 scrollView.setOnTouchListener(n ...

最新文章

  1. Windows Mobile 6.0 SDK和中文模拟器下载
  2. Spring Boot 中使用@Async实现异步调用,加速任务执行!
  3. Python忽略warning警告错误
  4. 抖音爬虫路上的填坑之路
  5. 基于Solr的空间搜索学习笔记
  6. hdu 1423 最长公共递增子序列
  7. go语言在windows编译在linux上运行的可执行程序
  8. 当学术大家遇到技术大拿,如何攻克数据库应用头号难题?数位产学研大咖这样解读
  9. 【GWT系列】实现远程过程调用
  10. BOA软件服务的移植和BOA服务的配置
  11. Java菜鸟教程 一些简单的练习
  12. linux文本编辑器
  13. Flutter 2.5 的新特性
  14. flashfxp v3.3.4(build1109)的密钥
  15. win10增加图片查看器
  16. uni-app设置原生标题栏渐变色
  17. essay 浅谈ACM盲区(上)
  18. 无线路由器介绍和有线路由器上网
  19. php 获取文章内容首图,关于文章的首图及图片版权问题
  20. 淘宝客微信机器人接口API开发

热门文章

  1. 进程间通信(3) 剪贴板
  2. 计算机网络考试有感 2019 山东大学
  3. 思考并实现以下程序功能:实现一个抢红包的程序 java
  4. 设计模式--组合(Component)模式
  5. 738. 单调递增的数字(贪心算法)
  6. optee中utee syscall的实现(系统调用实现)
  7. linux migrations病毒守付进程分析
  8. prometheus rfc3339 php date 转换
  9. 15、HTML单行文本框
  10. 5、MySQL事务隔离级别详解