我在Macbook Pro上玩Qt(v.5.5)手势,看看哪些功能可靠。
TapGesture = 1,
TapAndHoldGesture = 2,
PanGesture = 3,
PinchGesture = 4,
SwipeGesture = 5,
使用触摸板,我可以可靠地将捏手势作为手势事件进行回调,而不是其他类型。潘有时会工作,但只有一个口腔垫,并且只有在触摸板上有超过1个手指并且我没有设法滑动工作。我也尝试使用鼠标,这似乎也不起作用。
我无法在线找到解释这些手势是什么,以及/或如何触发它们的文档。
答案 0 :(得分: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 。
对于您自己的平台,此代码至少应该有助于确定最能描述您想要获取的行为的事件类型(即使您可能必须再次停用event->accept()
)。
答案 1 :(得分:0)
QGestureEvent 提供活动和非活动手势的列表,而不仅仅是单个手势事件。如果您抓取多个事件,请不要使用 if/else 逻辑,而是确保处理在单个 QGestureEvent 中接收到的所有事件