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

问题描述 投票:4回答:1

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

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

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

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

qt gesture gesture-recognition
1个回答
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;
}

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

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

© www.soinside.com 2019 - 2024. All rights reserved.