プロパティへのアクセス速度に問題があり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++ getter を呼び出すのではなく、c++ からデータを一度コピーして、「ローカル qml コピー」からアクセスしたいと考えています。