我已经玩弄此片的代码:

QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100);
qDebug() << anotherLine->scenePos();

QGraphicsLineItem * anotherLine2 = this->addLine(80,10, 300, 300);
qDebug() << anotherLine2->scenePos();

this指针指QGraphicsScene。在这两种情况下,我得到两个输出QPointF(0,0)。出租车从阅读的文档,我想scenePos()应该在场景内返回线的位置,而不是在那里是它的局部坐标系中。我在做什么错了?

有帮助吗?

解决方案

仔细阅读QT 4.5文档后 addLine ,我明白我一直在做错误的。根据该文档:

  

请注意,该项目的几何   在项目的坐标提供,其   位置被初始化为(0,0)

所以,如果我指定addLine(50,50,100,100),其实我只是修改它的本地项目协调。我做了一个场景的坐标将被处理的假设是错误的或毫无根据的。我应该做的是这样的

// Create a line of length 100
QGraphicsItem * anotherLine = addLine(0,0, 100, 100); 

// move it to where I want it to be within the scene
anotherLine->setPos(50,50);

所以,如果我被场景中绘制添加一行,我需要它的中心重置为(0,0),然后使用setPos()将其移动到那里我希望它是在场景中。

希望这可以帮助任何人在同样的问题,谁绊倒。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top