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()、アイテムをシーンに追加します。今、私はシーンからその位置を取得したいと考えています。機能を見つけましたitemAtconst QTransformしかし、問題は&が何であるかわかりませんdeviceTransform。? には何を使用すればよいQTransformですか。

に変換を実装していないためQGraphicsItemです。これは私を混乱させます。

4

1 に答える 1

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

指定された位置で一番上に表示されているアイテムを返します。この位置にアイテムがない場合は 0 を返します。deviceTransformビューに適用される変換であり、変換を無視するアイテムがシーンに含まれている場合に指定する必要があります。この関数は Qt 4.6 で導入されました。

したがって、一部のアイテムを変換して他のアイテムを無視する必要がある場合は、単にデフォルト値QTransform()QGraphicsView::transform() const.

スーロン ザイ

于 2012-12-25T13:55:25.990 に答える