【发布时间】:2019-02-01 20:55:54
【问题描述】:
我在确定QGraphicsLineItem 的位置时遇到问题。我想相对移动场景中的物品,所以我需要知道它们的位置。我有几个QGraphicsPixmapItem 对象,我对它们没有任何问题,因为pixmapItem.pos() 为我提供了场景坐标中每个项目的真实位置。但是对于QGraphicsLineItems,我每行都得到相同的坐标(0,0)。这是代码:
QGraphicsLineItem*line = new QGraphicsLineItem();
scene->addItem(line);
line->setLine(QLineF(0,VVR-i*(OH),HVR,VVR-i*(OH)));
此代码在正确位置绘制线条,但其坐标设置为(0,0) 而不是(0,VVR-i*(OH))。
当行项目到达大于 VVR 的位置时,以下代码应将行项目移动 (VVR + OH)。但是由于所有行都有起始位置 (0,0),所以无论我把它们放在哪里,所有行都会同时移动。
QPointF current_pos = line->pos();
if (current_pos.y() >= VVR)
{
line->setPos(current_pos.x(),current_pos.y()-(VVR+(OH)));
}
我怎样才能得到QGraphicsLineItem 的真实(场景)坐标,因为我得到QGraphicsPixmapItem 谢谢!
【问题讨论】:
-
要获取线在场景中的位置,使用函数scenePos(),而不是pos(),它将返回对象在场景坐标中的位置。
标签: c++ qt qgraphicsscene