我正在使用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>");
我没有收到任何错误,但是列表只是我的nullptr或C ++方面的类似内容。
我的第二个最佳选择是单独传递TouchPoint(不在列表中)。
这是可能的解决? 如果没有,那么我有什么选择将所有信息从TouchPoint传递到C ++?
答案 0 :(得分:0)
我认为一种方法可能是将有关组件状态的易于分析的“报告”传递给C ++。 Dunno现在在TouchPoint中有哪些属性,但是大概将它们转储到文本似乎很容易实现(也许使用Array.join)。然后从C ++解析回去并使用该数据。
答案 1 :(得分:0)
如果您真的坚持要使用C ++的多点触摸功能,则只需拦截C ++端的触摸事件,而不必担心MultiPointTouchArea
,我的意思是,如果这确实是您所需要的。
期望此代码能够正常工作是很困难的,在QML和C ++之间隐式地来回转换的类型列表不包括接触点,更不用说接触点了。
更明智的方法是包括一个仅接收相关输入信息的界面。