你如何在QML中声明一个Qt.points数组?

时间:2017-08-29 11:16:58

标签: arrays qt qml qt-quick

在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。

1 个答案:

答案 0 :(得分:0)

property var Qt.point points: []

这没有意义,语法是属性+类型+名称。 Qt.point不是类型,而是返回类型为point的对象的函数。包含JS数组的var肯定不会在C ++中转换为QObject *

我建议你将你的点数组实现为C ++类,使用访问器函数来访问或操纵来自QML的数据。因此,您的QVector<QPoint>类中将有一个X,以及获取大小,获取或设置点,追加,前置,插入和诸如此类的函数。因此,当您调用save()时,您可以直接访问C ++数据。那将是最有效的解决方案。