什么是QGraphicsScene :: itemAt()中的qtransform

时间:2012-12-24 20:49:14

标签: c++ qt qgraphicsitem qgraphicsscene

我创建了一个自定义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中实现任何转换。这让我很困惑。

1 个答案:

答案 0 :(得分:5)

QGraphicsItem * QGraphicsScene::itemAt ( const QPointF & position, const QTransform & deviceTransform ) const
  

返回指定位置的最顶层可见项,如果是,则返回0   这个位置没有物品。 deviceTransform是   适用于视图的转换,如果需要提供   场景包含忽略转换的项目。这个功能   在Qt 4.6中引入。

所以我想说,如果您需要转换某些项目而忽略其他项目,则可以使用默认值QTransform()或更好的QGraphicsView::transform() const

soo long zai