[英]How to pass list of TouchPoints from QML to C++?
我正在使用MultiPointTouchArea,並且只要觸發onPressed,onReleased或onUpdated,就希望將接觸點列表傳遞給C ++端。
這是我嘗試過沒有成功的:
QML:
MultiPointTouchArea {
minimumTouchPoints: 1
maximumTouchPoints: 2
touchPoints: [
TouchPoint { id: touch1 },
TouchPoint { id: touch2 }
]
onPressed: {
myCPlusPlusClass.onPressed(touchPoints)
}
}
C ++:
void myCPlusPlusClass::onPressed(const QList<QTouchEvent::TouchPoint>& list)
{
// Do something
}
我已將QListQTouchEvent :: TouchPoint注冊為元類型,如下所示:
qRegisterMetaType<QList<QTouchEvent::TouchPoint>>("QList<QTouchEvent::TouchPoint>");
我沒有得到任何錯誤,但是在C ++方面列表只是我的nullptr或類似的。
我的第二個最佳選擇是單獨傳遞TouchPoints(不在列表中)。
這有可能解決嗎? 如果沒有,我有什么選擇將所有信息從TouchPoint傳遞到C ++端?
我認為一種方法可能是向C ++傳遞一個關於組件狀態的易於解析的“報告”。 Dunno現在TouchPoint(s)中有哪些屬性,但可能會將它們轉儲到文本中似乎很容易實現(可能使用Array.join)。 然后從C ++解析並使用該數據。
如果你真的堅持使用C ++的多點觸控,你可以簡單地攔截C ++方面的觸摸事件,而不用麻煩任何MultiPointTouchArea
,我的意思是,如果這就是你需要的全部內容。
期望這段代碼能夠正常工作,在QML和C ++之間來回隱式轉換的類型列表不包括觸摸點,更不用說這樣的列表了。
更安全的方法將包括僅接收相關輸入信息的接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.