SwipeView 检测释放事件 QML - QT

SwipeView detect on release event QML - QT

我需要检测用户何时从屏幕上松开手指。 我正在用 SwipeView 做一个应用程序,但是当手指从屏幕上移开时,我还需要检测最小滑动。

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

我想您的应用程序的最佳方法是使用水平方向的 ListView,委托是 "page",现在您可以检测

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

在我开始学习 QML 时,我遇到了类似的问题:我想在不干扰应用程序其余部分的情况下检测鼠标事件。

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

我的想法是构建一个 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

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