簡體   English   中英

如何將TouchPoints列表從QML傳遞到C ++?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM