我创建了一个自定义QGraphicsItem
。并覆盖boundingRect()
和paint()
。
QRectF myTile::boundingRect() const
{
return QRectF(xPos*10, yPos*10, 10, 10);
}
void myTile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
int gvi = value * 255;
QColor gv(gvi, gvi, gvi, 255);
QBrush brush(gv);
painter->fillRect(rec, brush);
painter->drawRect(rec);
}
然后我使用addItem()
将项添加到场景中。现在我想通过它的位置从现场得到它。我找到itemAt
函数。但问题是我不知道const QTransform
& deviceTransform
。我应该为QTransform
使用什么?
因为我没有在QGraphicsItem
中实现任何转换。这让我很困惑。
答案 0 :(得分:5)
QGraphicsItem * QGraphicsScene::itemAt ( const QPointF & position, const QTransform & deviceTransform ) const
返回指定位置的最顶层可见项,如果是,则返回0 这个位置没有物品。
deviceTransform
是 适用于视图的转换,如果需要提供 场景包含忽略转换的项目。这个功能 在Qt 4.6中引入。
所以我想说,如果您需要转换某些项目而忽略其他项目,则可以使用默认值QTransform()
或更好的QGraphicsView::transform() const
。
soo long zai