QGraphicsScene::itemAt()中的QTransform是什么?

12

我创建了一个自定义的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个回答

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

返回指定位置最上面可见的项,如果该位置没有任何项,则返回0。如果场景包含忽略变换的项,则需要提供应用于视图的转换deviceTransform。此函数在Qt 4.6中引入。所以我想说,如果您需要对某些项进行变换并忽略其他项,则可以使用默认值QTransform()或更好的QGraphicsView::transform() const

1
请注意,QGraphicsScene 可以有多个视图。因此,deviceTransform 的值取决于上下文。例如,在鼠标事件处理程序中,您需要确定事件来自哪个视图。请参见此评论 - Martin Hennings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接