QPinchGesture QGesture 使用方法

1.第一步使能触摸事件,这允许我们接收触摸开始事件。

MyWebView::MyWebView(QGraphicsItem *parent) :QGraphicsWebView(parent)
{
setAcceptTouchEvents(true); //设置这个为了接收触摸事件

grabGesture(Qt::PinchGesture);//调用这个函数pinch(捏)手势被允许,这将使MyWebView作为QGestureEvents的目标。

}

2.标准事件的处理需要通过重新实现QGraphicsWebView's sceneEvent(QEvent *event).

bool MyWebView::sceneEvent(QEvent *event)
{
switch(event->type()){
case QEvent::TouchBegin:
//accepting touch begin allows us to get touch updates
return true;
break; 
case QEvent::Gesture:
return gestureEvent(static_cast<QGestureEvent*>(event));
break;
default:
return QGraphicsWebView::sceneEvent(event);
}
}

3.在你接收额外的触摸更新和触摸结束事件,开始触摸事件必须被接受。这是需要手势识别工作。当手势事件被接收,我们把它传递给gestreEvent()处理程序检查手势类型,并转发给pinchGesture处理程序。当你想使用多个手势的时候,使用gestureEvent处理程序非常有用。

bool MyWebView::gestureEvent(QGestureEvent *event)
{
if (QGesture *pinch = event->gesture(Qt::PinchGesture)){
pinchTriggered(static_cast<QPinchGesture *>(pinch));
}
return true;
}

4。最后一步是根据用户输入缩放当前页,这是个不错的主意。限制缩放因素包括用户很少用到的缩放非常大和非常小的级别。

void MyWebView::pinchTriggered(QPinchGesture *gesture)
{
QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
if (changeFlags & QPinchGesture::ScaleFactorChanged) {
qreal value = gesture->scaleFactor(); 
qreal zoom
 = value*zoomFactor();
if(zoom < 2 && zoom > 0.5){
qDebug()<< "zooming";
setZoomFactor(zoom);
}
}
}




http://blog.csdn.net/firefox0123/article/details/40823559

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值