質問

意図したように座標マッピングを作業する問題があります。何らかの理由で、非常に具体的な状態が満たされていない限り、結果は通常オフです。

これはシナリオの例です:

Enter Image説明

オブジェクトはツリー内に並べられ、各ノードは100ピクセルの正方形である。マッピングは各ノードから最初のノードの親に行われます。アイテムは順序付けられているので、それらが注文されているようにパラントされています。 1は2,4の親、2は3の親などです...

  • node0は、その親のローカル座標0,0であるので論理的にはノード0の位置をマッピング0,0
  • node1は100,100を返しません。代わりに200,200
  • を返します。
  • node2と3は異なって振る舞います、この時間はそれぞれ前回の(不適切な)ノード値から300,300、400,400に正しくインクリメントされます
  • ノード4は、ノード2
  • の下の100ピクセルにすぎませんが、300,700を返します。
  • ノード5 - 200,1000
  • ノード6 - 300,700 - ノード5より低いが、低いy値
  • を示しています
  • ノード7 - 200,1400 - 100画素はノード6より低い700追加のピクセルy値
  • を返します。

このマッピングは、私がそうであると仮定したことができないようです。これは、座標を生成します。ノード0の左上隅は予想される値を生成するはずです:

  • node0 0,0
  • ノード1 100,100
  • ノード2 200,200
  • ノード3 300,300
  • ノード4 200,400
  • ノード5 100,500
  • ノード6 200,600
  • ノード7 100,700

特定のレベルのすべての子供が結果を急ぐに歪めるようです。ここで何が起こっているのは何ですか?

役に立ちましたか?

解決

mapToItemメソッドを調査した後、私は仕事のための正しいツールではないと結論付けたので、私は自分のものを書きました。

QPointF absolutePosition() {
        QPointF p(0, 0);
        QQuickItem * item = this;
        while (item != Object::_rootUI) { // absolute position relative to _rootUI
            p += item->position();
            item = item->parentItem();
        }
        return p;
    }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top