SwipeView检测发布事件QML - QT

时间:2017-09-11 09:59:10

标签: qt qml touch cross-platform slide

我需要检测用户何时从屏幕上松开手指。 我正在使用SwipeView进行应用程序,但是当手指从屏幕上移除时,我还需要检测最小的幻灯片。

有一种方法吗?或者,如果我检测到手指何时离开ApplicatioWindow上的屏幕。 感谢。

2 个答案:

答案 0 :(得分:0)

我认为应用程序的最佳方法是使用具有水平方向的ListView,并且委托是一个"页面"现在你可以检测到

ListView继承自Flickable,您现在可以检测到鼠标事件。 http://doc.qt.io/qt-5/qml-qtquick-listview.html

答案 1 :(得分:0)

在我的QML学习的最初阶段,我遇到了类似的问题:我想检测鼠标事件而不会干扰应用程序的其余部分。

它可能不是正确的解决方案,也许它是非常糟糕的风格 hacky 但是它有效,并且可能对您有帮助。< / p>

我的想法是构建一个C ++项目,我将其作为父节点用于我希望监视其鼠标事件的所有节点。在这个Item中,我通过重新实现它来挂钩childMouseEventFilter

bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event)
{
    emit mouseEventHappend();
    event->ignore(); // Don't know if that is right. I think I should not have it here.
    return QQuickItem::childMouseEventFilter(item, event);
}

在这个解决方案中,我不会检查我得到了什么样的鼠标事件,但你可能会根据它发出不同的信号。
如果在触摸设备上使用,您可能会对两个事件感兴趣:

检查QEvent.type()以正确处理它们。有趣的类型是:

  • QEvent::MouseButtonPress
  • QEvent::MouseButtonRelease
  • QEvent::MouseMove
  • QEvent::TouchBegin
  • QEvent::TouchCancel
  • QEvent::TouchEnd
  • QEvent::TouchUpdate

更多:http://doc.qt.io/qt-5/qevent.html#Type-enum

特别是触摸事件提供了关于手势开始和手指移动的最后一段的很好的信息,这可能是您感兴趣的。