只是想把我的头缠在QTouchEvent上。任何帮助/建议表示赞赏。
具体来说,当触发触摸事件时(例如TouchBegin),我有点困惑;这仅代表一个唯一的接触点吗?如果是这样,为什么QTouchEvent内有一个接触点列表?
如果不是,那么Qt是否会将在给定时间段内发生的多个TouchBegin实例组合在一起,并作为一个事件进行传递,并封装在事件中?同样,QTouchUpdate事件将包含有关当时正在更新的多个接触点的信息?
我也认为
QTouchEvent::TouchPoint::id
在整个TouchBegin,TouchUpdate和TouchEnd中保持一致。意味着在不同的触摸事件中,如果我看到一个具有相同ID的点,则这是两个事件都引用的同一触摸点。这个假设正确吗?
仅供引用:我已经在TUIO工作了一段时间,所以如果有人同时熟悉Qt和TUIO,那么对我来说比较的解释会容易得多。我也阅读了Qt文档,但是找不到我的问题的答案。
尽管如此,我还是非常感谢任何帮助。
谢谢。
最佳答案
在不同平台上,事件的确切报告方式似乎有所不同。如果您用两根手指按下它,则可以从一个接触点(TouchBegin)开始,然后立即以带有两个TouchUpdate点的新QTouchEvent跟随它。但是它也可以将两个接触点分组到TouchBegin QTouchEvent中。但是我也目睹了两个TouchBegin事件,尽管该事件是被禁止的(请参阅QTouchEvent文档中的“接触点分组”)。
开始之后,TouchUpdates再次有所不同。有时,即使您抬起一根手指,总会得到2分(或手指向下的量)。在这种情况下,抬起的手指“id”的压力为0。或者,您将获得实际下降的接触点ID数量。
了解这些事件是如何生成的最好方法是install an eventfilter并在按下事件时对其进行观察。