背景:我正在尝试创建一个类似于淡入淡出效果的小部件,可以在同一视图中具有多个实例,每个实例都可以由不同手指同时控制。
我想使用Qt的手势识别系统,但是我还需要一些超出标准Qt::PanGesture
功能的功能。为此,我继承了QGesture
和QGestureRecognizer
。在FooGestureRecognizer :: recognize(...)
中,我目前拦截QMouseEvent
和QTouchEvent
(至少现在是这样)。
在Windows上,我只接收到QMouseEvent
- 我处理它们并且一切都按预期工作(尽管显然当我的输入来自物理鼠标时,我不必处理多点触控问题)。我接收到的事件(按顺序):
QEvent :: MouseButtonPress
- 一系列
QEvent :: MouseMove
QEvent :: MouseButtonRelease
在Android上,我接收到一种奇怪的组合QMouseEvent
和QTouchEvent
(按顺序):
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
? event-> accept()
似乎没有任何区别。
代码可用,但为了简洁起见,我没有在此处包含它。如果需要,请询问。