在C ++课程中,我有类似的东西(我尝试了不同的东西):
class X : public QObject {
Q_OBJECT
public:
Q_INVOKABLE void save(int _n, QObject *_points);
我在qml文件中尝试了这个,但它没有编译:
property var Qt.point points: []
我想将这个数组从QML(在javascript函数中)传递给像这样的C ++函数:
x.save(root.points.length, root.points)
如果我宣布这样的点:
property var points: []
调用C ++函数,但points为NULL。
答案 0 :(得分:0)
property var Qt.point points: []
这没有意义,语法是属性+类型+名称。 Qt.point
不是类型,而是返回类型为point
的对象的函数。包含JS数组的var
肯定不会在C ++中转换为QObject *
。
我建议你将你的点数组实现为C ++类,使用访问器函数来访问或操纵来自QML的数据。因此,您的QVector<QPoint>
类中将有一个X
,以及获取大小,获取或设置点,追加,前置,插入和诸如此类的函数。因此,当您调用save()
时,您可以直接访问C ++数据。那将是最有效的解决方案。