3

プロパティへのアクセス速度に問題があり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 コピー」からアクセスしたいと考えています。

4

1 に答える 1