Подтвердить что ты не робот

Что такое qtransform в QGraphicsScene:: itemAt()

Я создаю пользовательский 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. Это меня смущает.

4b9b3361

Ответ 1

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

Возвращает самый верхний видимый элемент в указанной позиции или 0, если на этой позиции нет предметов. deviceTransform - это преобразование, которое применяется к представлению, и должно быть обеспечено, если сцена содержит элементы, которые игнорируют преобразования. Эта функция был введен в Qt 4.6.

Итак, я бы сказал, если вам нужно преобразовать некоторые элементы и игнорировать остальные, вы можете просто пойти со значением по умолчанию QTransform() или даже лучше QGraphicsView::transform() const.

soo long zai