上一篇文章中讲到了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