2017-08-29 61 views
0

在C++类我有这样的事情(我已经尝试不同的东西):如何在QML中声明Qt.points数组?

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
property var Qt.point points: [] 

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

我建议你实现你的数组作为C++类,使用访问函数来访问或操作QML中的数据。所以你将在你的X类中有一个QVector<QPoint>,以及获取大小,获取或设置点,追加,前置,插入和什么的函数。所以当你打电话给save()时,你可以直接访问C++数据。这将是最有效的解决方案。