Qt针对触屏发出的消息名称是QEvent::Gesture,启用该事件的方法为:
1、重写 event事件:
bool event(QEvent*)
{
if (event->type() == QEvent::Gesture)
{
return gestureEvent(static_cast<QGestureEvent*>(event));
}
return QGLWidget::event(event);
}
2、编写事件处理函数:
bool gestureEvent(QGestureEvent *event)
{
if (QGesture *pinch = event->gesture(Qt::PinchGesture))
pinchTriggered(static_cast<QPinchGesture *>(pinch));
return true;
}
void pinchTriggered(QPinchGesture *gesture)
{
QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
if (changeFlags & QPinchGesture::ScaleFactorChanged)
{
qreal value = gesture->property("scaleFactor").toReal();
if(fabs(value-1.0)>0.05)
{
if(value>1.0)
{
scale+=scale*0.1;
}
else
{
scale-=scale*0.1;
}
}
}
}