予想どおりに機能していない項目へのマッピング座標
-
21-12-2019 - |
質問
意図したように座標マッピングを作業する問題があります。何らかの理由で、非常に具体的な状態が満たされていない限り、結果は通常オフです。
これはシナリオの例です:
オブジェクトはツリー内に並べられ、各ノードは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;
}
. 所属していません StackOverflow