1
出于测试目的,我试图在场景上绘制几个矩形并在其中添加一些文本。矩形应该显示在一列中。他们是,但问题是文本不是。所有文本都堆叠在场景的左上角。QGraphicsItem在场景中的位置始终为空
而且,pos()
和scenePos()
总是为每个文本框和文本返回(0,0)。
下面是代码负责人认为:
QHash<QString,Picto> Palette::getPics(){
SpriteSheetManager ssm("sprite_zone");
QList<QString> picNames = ssm.finder->allPic(); //Get all string to be displayed
QHash<QString,Picto> picList;
for(int i = 0; i < picNames.size(); i++){
QString picName = picNames.at(i);
QGraphicsTextItem *label = new QGraphicsTextItem();
label->setPlainText(picName);
QGraphicsRectItem *rect = new QGraphicsRectItem();
rect->setRect(0,i*20,50,20);
label->setParentItem(rect);
label->setPos(0,0);
this->addItem(rect);
qDebug()<< rect->pos(); //always return (0,0)
}
return picList;
}
谁能告诉我什么,我做错了什么?
我试过这个代码有几个变化,但我不能解决这个问题。
这意味着你必须移动标签本身,不是吗?我强硬它应该与它的父母一起移动,因为它的位置应该是相对于父母的。 – Laetan 2014-10-20 11:50:04
@Laetan是的,我移动标签。是的,它相对于父母,但正如你所说,你的父母每次都有0,0个坐标,所以标签的坐标也是0,0。 – Chernobyl 2014-10-20 12:04:38
我知道,但这就是问题所在。为什么直角坐标显然不位于视图上的0,0位置时总会有(0,0),并且我如何设置它以便正确的位置用于儿童物品? – Laetan 2014-10-20 12:24:55