上下文:我正在尝试创建一个类似推子的小部件,它可以在同一个视图中有多个实例,每个实例都可以由不同的手指同时控制。
我想使用Qt的手势识别系统,但我还需要一些超出标准的功能Qt::PanGesture
。为此,我对 和 进行了子类QGesture
化QGestureRecognizer
。在FooGestureRecognizer::recognize(...)
中,我目前正在拦截QMouseEvent
s 和QTouchEvent
s (至少目前是这样)。
在 Windows 上,我只收到QMouseEvent
s - 我处理它们并且一切都按预期工作(尽管当我的输入来自物理鼠标时,显然我不必处理多点触控问题)。我收到的事件(按顺序):
QEvent::MouseButtonPress
- 一串
QEvent::MouseMove
s QEvent::MouseButtonRelease
在 Android 上,我收到QMouseEvent
s 和QTouchEvent
s 的奇怪组合(按顺序):
QEvent::TouchBegin
QEvent::MouseButtonPress
QEvent::MouseMove
(位置没有实际变化)- 另一个
QEvent::MouseButtonPress
(不知道为什么我需要另一个) QEvent::MouseMove
正如预期的那样,我的实际字符串QEvent::MouseButtonRelease
全局属性Qt::AA_SynthesizeMouseForUnhandledTouchEvents
是true
默认的。关闭它会将我收到的事件更改为:
QEvent::TouchBegin
...没有其他的。
那么这是一个前置问题:我可以在内部做什么QGestureRecognizer::recognize()
来告诉 Qt 我正在处理QEvent::TouchBegin
,并且它不需要QEvent::MouseButtonPress
为我合成 a ? event->accept()
似乎没有任何区别。
实际问题:如果(看起来)Qt 正在MouseEvent
从 s 合成 s TouchEvent
,为什么我看到 I see QEvent::MouseMove
andQEvent::MouseButtonRelease
但没有QEvent::TouchUpdate
or QEvent::TouchRelease
?
代码是可用的,但为了简洁起见,我没有在这里包含它。如果需要请询问。