Сопоставление координат к товару, не работающим, как ожидалось

StackOverflow https://stackoverflow.com//questions/21029273

  •  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;
    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top