如何在QML中声明Qt.points数组?
问题描述:
在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。
答
property var Qt.point points: []
这没有任何意义,语法是属性+类型+名称。 Qt.point
不是一种类型,而是一种返回point
类型对象的函数。包含JS数组的一个var
肯定不会被转换为C++中的QObject *
。
我建议你实现你的数组作为C++类,使用访问函数来访问或操作QML中的数据。所以你将在你的X
类中有一个QVector<QPoint>
,以及获取大小,获取或设置点,追加,前置,插入和什么的函数。所以当你打电话给save()
时,你可以直接访问C++数据。这将是最有效的解决方案。