QT经验(一)——按钮长按事件分析
引言
最近在做qt项目,需要对button按钮添加一个长按事件(比如点击按钮,开始运动。松开按钮,运动停止)。查了些许资料,(差点误把QPushButton的press信号和长按事件混淆)在此记录一下经验。
setAutoRepeat
以前一直以为QPushButton不支持长按,才发现还有这个功能。用起来很简单:
QPushButton *pBtnSub = new QPushButton(this);
pBtnSub->setAutoRepeat(true); //启用长按
pBtnSub->setAutoRepeatDelay(400);//触发长按的时间
pBtnSub->setAutoRepeatInterval(50);//长按时click信号间隔
connect(pBtnSub,&QPushButton::clicked,[&]{
qDebug()<<"send";
其实在这之前我瞄了眼MouseEvent,它是没有repeat这个东西的,所以一个按钮被鼠标点击还能连续触发,那基本就是一个定时器做出来的。
所以应该说是鼠标按下Delay时间后会启动一个多次触发的TimerEvent(定时器),由timeOut再次触发click槽。
QPushButton 点击信号分析
再来分析一下QPushButton的点击信号。QPushButton有三个很重要的信号跟点击有关:
- pressed
- clicked
- toggled
表面上看,pressed和clicked都会在点击按钮时触发,它们有什么区别呢?toggled好像有时候触发,有时候不触发,到底怎么回事呢?下面就一起聊一下这三个信号
验证过程就不放了,直接给结论吧!
首先,这三个信号都是从QAbstractButton继承来的,也就是说,下面情况对QAbstractButton的所有子类都适用
结论:
- pressed最先执行,相当于按下操作
- 按下之后,按钮状态发生变化,触发toggled
- clicked最后执行,相当于弹起操作
QT经验(一)——按钮长按事件分析的更多相关文章
- qt 两种按钮点击事件应用
1.传统connect 例如: connect(ui->findPushBtn,SIGNAL(clicked()),this,SLOT(find())); 参数1:事件UI 参数2:点击系统函数 ...
- 【swift】长按事件绑定,平移滑动事件+坐标获取
为何把这两个事件归类在一起? 我后来才明白,iOS有一个手势事件(UiGestureRecognizer) 事件里有7个功能,不过我只试过前两个,也就是标题的这两个(长按.平移滑动) UILongPr ...
- Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
之前写过关于HorizontalScrollView滑动和按钮事件触发问题,但是不能所有的情况,最近几天一直在想这个问题,今天有一个比较好的解决思路,最终应用在项目里面效果也很好,首先说明一下功能: ...
- Android开发 ---基本UI组件5:监听下拉选项,动态绑定下拉选项、全选/反选,取多选按钮的值,长按事件,长按删除,适配器的使用,提示查询数据,activity控制多按钮
效果图: 效果描述: 1.当点击 1 按钮后,进入选择城市的页面,会监听到你选中的城市名称:动态为Spinner绑定数据 2.当点击 2 按钮后,进入自动查询数据页面,只要输入首字母,就会动态查找以该 ...
- JS如何利用定时器实现长按事件
本篇文章由:http://xinpure.com/js-how-to-use-timer-press-event/ JS 原生事件并没有长按事件,但是我们可以利用一些原有的事件,来实现长按事件 任务需 ...
- Handler处理长时间事件
当我们在处理一些比较长时间的事件时候,比如读取网络或者数据库的数据时候,就要用到Handler,有时候为了不影响用户操作应用的流畅还要开多一个线程来区别UI线程,在新的线程里面处理长时间的操作.开发的 ...
- 为自定义的View添加长按事件
以前开发画板组件时,要添加一个长按监听事件,这个画板实际上就是继承自View的一个自定义组件. 首先,设置好长按事件发生时要触发的操作: private class LongPressRunnable ...
- TextView AutoLink, ClikSpan 与长按事件冲突的解决
前言 首先,我们先来复习一下 autoLink 和 ClickableSpan 是干什么用的. autoLink 当中有五个属性值:分别是 phone.email.map.web.all 和 none ...
- 第24章、OnLongClickListener长按事件(从零开始学Android)
在Android App应用中,OnLongClick事件表示长按2秒以上触发的事件,本章我们通过长按图像设置为墙纸来理解其具体用法. 知识点:OnLongClickListener OnLongCl ...
随机推荐
- bzoj2427 软件安装! 树dp
软件安装 内存限制:128 MiB 时间限制:1000 ms 标准输入输出 题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一 些软 ...
- Go语言Slice作为函数参数详解
Go语言Slice作为函数参数详解 前言 首先要明确Go语言中实质只有值传递,引用传递和指针传递是相对于参数类型来说. 个人认为上诉的结论不对,把引用类型看做对指针的封装,一般封装为结构体,结构体是值 ...
- NAT介绍与配置
一,NAT定义 二.NAT的分类 三,NAT配置实验 一,NAT定义 NAT(Network Address Translation),网络地址转换技术,随着Internet的发展,IPv4地址枯竭已 ...
- python读取txt文件绘制散点图
方法和画折线图类似,差别在于画图函数不一样,用的是scatter() import matplotlib.pyplot as plt #以外部两个txt表分别作为x,y画图n=0m=0with ope ...
- POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊
题意:给定s1,s1两副扑克,顺序从下到上.依次将s2,s1的扑克一张一张混合.例如s1,ABC; s2,DEF. 则第一次混合后为DAEBFC. 然后令前半段为s1, 后半段为s2. 如果可以变换成 ...
- centos7安装chrome+chromeDriver+Xvfb
安装chrome 创建yum源 # cd /etc/yum.repos.d/ # vim google-chrome.repo 创建yum源信息 [google-chrome] name=google ...
- mysql某建表语句
CREATE TABLE `product_info`( `product_id` VARCHAR(32) NOT NULL COMMENT '主键', `product_name` VARCHAR( ...
- leetcode 861 翻转矩阵后的得分
1. 题目描述 2.思路分析: 1. 首先这里的翻转分为了行翻转和列翻转,我们这里只需要求如何翻转后得到最大值,有点贪心的思想,因为最大值一定是固定的 至于是什么路径到达的最大值不是我们所关心的,我们 ...
- bugku--cookie欺骗
打开题目一看,是一串的东西,再看了一下filename发现不对劲了,明显是base64编码,拿去解码一下, 发现是这个,说明是filename,是需要解析的哪个文件名,把index.php编码一下,试 ...
- 剑指offer 37-42
37. 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 思路: 1.平衡二叉树的定义为,当为空树或左右子树高度小于等于1,同时左右子树都要为平衡二叉树. 2.先分别求出左右子树的高度,比较高度差,如果 ...