Сопоставление координат к товару, не работающим, как ожидалось
-
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 соответственно
- node4 возвращает 300, 700, хотя это всего 100 пикселей ниже узла 2
- node5 - 200, 1000
- node6 - 300, 700 - это ниже узла 5, но показывает более низкое значение y
- node7 - 200, 1400 - 100 пикселей ниже узла 6 Возврат 700 Дополнительные пиксели y Значение y
Похоже, что это отображение не делает то, что я предполагаю, что это делает координата, абсолютный к сопоставлению объекта, например, Верхний левый угол узла 0. Что следует производить ожидаемые значения:
- .
- node0 0, 0
- node1 100, 100
- node2 200, 200
- node3 300, 300
- node4 200, 400
- node5 100, 500
- node6 200, 600
- node7 100, 700
Похоже, что каждый новый ребенок на данном уровне перекоснет результат. Любая идея, что здесь происходит?
Решение
После расследования метода GensacodicetacodCode я заключил не правильный инструмент для работы, поэтому я написал свой собственный.
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;
}
.