qt android 手势,Qt QWidget实现手势缩放和平移(二)

本文介绍如何在Qt的QWidget中利用touchEvent事件处理Android手势识别,实现手势缩放和平移功能。针对红外触控感应设备,通过识别两个触控点移动来计算缩放比例,支持两指放大缩小和单指移动。关键代码涉及QEvent::TouchBegin、QEvent::TouchUpdate和QEvent::TouchEnd事件,以及使用m_bIsTwoPoint变量区分单点和两点触控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章中讲到了QWidget实现手势缩放和平移,通过QGestureEvent来捕捉手势操作,但是这种方式不一定能通用,比如像教学用的电子白板上,是红外触控感应,并不能通过QGestureEvent来识别手势事件,那么,只能通过第二种比较通用的方式来解决该问题了。

通用的方式就是通过touchEvent事件来捕捉触控事件,然后通过识别两个触控点的移动位置来计算要缩放的比例,这里需要实现的是两个手指放大和和缩小,然后单指移动图片的功能,该方式只要在支持多点触控的设备上就能实现手势缩放。那么,这里只需要在上一篇文章的代码基础上修改event事件实现就好了,在event事件中捕捉touchEvent事件,其余代码不变。

关键代码如下:

bool CProjectionPicture::event(QEvent *event)

{

// if (event->type() == QEvent::Gesture)

// return gestureEvent(static_cast(event));

switch (event->type()) {

case QEvent::TouchBegin:

case QEvent::TouchUpdate:

case QEvent::TouchEnd:

{

qDebug()

QListtouchPoints = touchEvent->touchPoints();

if (touchPoints.count() == 2) {

m_bIsTwoPoint = t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值