我有一些速度访问QList<qreal>
属性的问题。 我宣布:如何加速访问QList <qreal>从C++暴露给QML
Q_PROPERTY(QList<qreal> circlePointsX READ circlePointsX NOTIFY circlePointsXChanged);
QList<qreal> circlePointsX(void) const
{
return mCirclePointsX;
}
,并在QML文件,我做了
pArea.circlesPointsX = paintAreaHelper.circlePointsX;
后,有些代码是由点读点:
var cPointsX = circlesPointsX;
var cPointsY = circlesPointsY;
var noOfPoints = circlesPointsX.length - 4;
for (var i = 0; i <= noOfPoints; i+=4)
{
ctx.moveTo(cPointsX[i], cPointsY[i]);
ctx.lineTo(cPointsX[i+1], cPointsY[i+1]);
ctx.lineTo(cPointsX[i+2], cPointsY[i+2]);
ctx.lineTo(cPointsX[i+3], cPointsY[i+3]);
ctx.lineTo(cPointsX[i], cPointsY[i]);
}
当然属性的类型是var
property var circlesPointsX;@
和分配:
var cPointsX = circlesPointsX;
不加快什么,因为它只是复制参考。
我放弃了它,并且对于每一次循环访问,都会调用C++方法。 我想从C++复制一次数据,并从“本地qml副本”访问它,而不是每次调用C++ getter。
然后将它复制到一个生活在“代码隐藏JS文件”中的JS变量 - 访问可能变得更快(但请记住,.js文件中的变量不受任何更改通知等影响 - 它们是普通的JS数据)。 – mlvljr