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;
}
}
}
}