我在使坐标映射按预期工作时遇到问题。由于某种原因,结果通常是关闭的,除非满足非常具体的条件。
以下是一个示例场景:
对象在树中排序,每个节点为100像素的正方形。从每个节点到第一个节点的父节点进行映射。物品按订购顺序排列,例如1是2和4的父,2是3的父,依此类推......
看起来这个映射没有按照我的假设做,它产生一个坐标,对于被映射到的对象是绝对的,例如,节点0的左上角。应该产生预期值:
似乎某个特定级别的每个新孩子都会将结果偏离。知道这里发生了什么吗?
答案 0 :(得分:1)
在调查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;
}