如何将 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>");
我没有收到任何错误,但是列表只是 nullptr 或 C++ 方面的类似内容。
我的第二个最佳选择是单独传递接触点(不在列表中)。
这个可以解决吗?
如果不是,我有什么选择可以将所有信息从 TouchPoint 传递到 C++ 端?
我认为一种方法是向 C++ 传递有关组件状态的易于解析的 'report'。现在不知道 TouchPoint(s) 中有哪些属性,但大概将它们转储到文本中似乎很容易实现(可能使用 Array.join)。然后从 C++ 解析回来并使用该数据。
如果你真的坚持使用 C++ 的多点触控,你可以简单地拦截 C++ 端的触摸事件,而不用理会 MultiPointTouchArea
任何东西,我的意思是如果这就是你真正需要的对于.
期望此代码能够工作是相当困难的,在 QML 和 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>");
我没有收到任何错误,但是列表只是 nullptr 或 C++ 方面的类似内容。
我的第二个最佳选择是单独传递接触点(不在列表中)。
这个可以解决吗? 如果不是,我有什么选择可以将所有信息从 TouchPoint 传递到 C++ 端?
我认为一种方法是向 C++ 传递有关组件状态的易于解析的 'report'。现在不知道 TouchPoint(s) 中有哪些属性,但大概将它们转储到文本中似乎很容易实现(可能使用 Array.join)。然后从 C++ 解析回来并使用该数据。
如果你真的坚持使用 C++ 的多点触控,你可以简单地拦截 C++ 端的触摸事件,而不用理会 MultiPointTouchArea
任何东西,我的意思是如果这就是你真正需要的对于.
期望此代码能够工作是相当困难的,在 QML 和 C++ 之间来回隐式转换的类型列表不包括接触点,更不用说此类列表了。
更明智的方法是包含一个仅接收相关输入信息的接口。