我有一些速度訪問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