2011-09-29 219 views
3

只是試圖圍繞QTouchEvent包裹我的頭。任何幫助/建議表示讚賞。Qt C++ QTouchEvent和TouchPoint混淆

具體來說,當觸發事件觸發時(例如TouchBegin),我有點困惑;這是否只代表一個獨特的觸點?如果是的話爲什麼QTouchEvent裏面有一個觸點列表?

如果不是,Qt是否會將給定時間分數內發生的幾個TouchBegin實例組合在一起,並將其作爲一個事件傳遞,並將事件中的點列表封裝起來?同樣,QTouchUpdate事件將包含當時正在更新的幾個觸點的信息?

另外我假設;

QTouchEvent::TouchPoint::id 

將在整個TouchBegin,TouchUpdate和TouchEnd中保持一致。這意味着在不同的觸摸事件中,如果我看到一個具有相同ID的點,則這兩個事件都指向同一觸點。這個假設是否正確?

僅供參考:我一直在與TUIO合作一段時間,所以如果有人熟悉Qt和TUIO,比較性的解釋會讓我更容易理解。我也讀過Qt文檔,但無法找到我的問題的答案。

不過,我真的很感激任何幫助。

謝謝。

回答

2

在不同的平臺上報告事件的方式似乎有所不同。如果您用兩個手指按下它,它可以從一個觸摸點(TouchBegin)開始,然後立即使用帶有兩個TouchUpdate點的新的QTouchEvent。但它也可以將兩個觸摸點分組到TouchBegin QTouchEvent中。但我也目睹了兩次TouchBegin事件,儘管這是一種禁止事件(請參閱QTouchEvent文檔中的「Touch Point Grouping」)。

開始之後,TouchUpdates又有了不同之處。有時候,即使你擡起一根手指,你總能得到兩點(或者手指朝下)。在這種情況下,擡起的手指「id」的壓力爲0。或者,您將獲得實際停機的接觸點ID數量。

瞭解如何生成這些內容的最佳方法是install an eventfilter並在按下時觀察事件。

+0

謝謝塔圖。安裝和事件過濾器是我現在正在做的事情。無論如何,我實際上需要一個過濾器,因爲我試圖在任何地方傳播之前攔截所有觸摸事件,並在該事件中注入一些額外的數據。 – pinkydoe