Qt手势只抓取Pinch可靠地工作

我在Macbook Pro上玩Qt(v.5.5)手势,看看它是否可靠.

    TapGesture        = 1,
    TapAndHoldGesture = 2,
    PanGesture        = 3,
    PinchGesture      = 4,
    SwipeGesture      = 5,

使用触摸板,我可以可靠地将捏合手势作为手势事件进行回调,而不是其他类型.潘有时会工作,但只有一个口腔垫,并且只有在触摸板上有超过1个手指并且我没有设法滑动工作.我也尝试使用鼠标,这似乎也不起作用.

我无法在线找到解释这些手势是什么,和/或如何触发它们的文档.

最佳答案 我不知道这是否会回答你的“问题”,但我想分享一些信息:手势似乎有很多混乱,包括我自己的谦虚知识,但我对它有了更多的见解. this nice answer here.它提到了一个我不知道的重要方面:接受事件.我最终像这样实现它:

bool YOURWIDGET::event(QEvent *event)
{
    if (event->type() == QEvent::Gesture)
    {
        return gestureEvent(static_cast<QGestureEvent*>(event));
    }
    else if (event->type() == QEvent::GestureOverride)
    {
        event->accept();
    }
    return QGraphicsView::event(event);
}

bool YOURWIDGET::gestureEvent(QGestureEvent *event)
{
    qDebug() << event;
    return true;
}

事实证明,PanEvent和PinchEvent在我的案例中是并发的.然而,简单的TapEvent就像我想象的那样PanEvent(握住并移动一些东西).还有一个SwipeEvent,只有三根手指.
这一切都适用于Windows 10.

对于您自己的平台,此代码至少应该有助于确定最能描述您想要获取的行为的事件类型(即使您可能必须再次停用事件 – > gt; accept()).

点赞