我在访问QList<qreal>
财产的速度方面遇到了一些问题。我已经宣布:
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。