0

私はQtを初めて使用するので、この質問を混乱させる可能性があります。そうは言っても-

サブクラス化されたQGraphicsView内で画像をレンダリングしています。addPixmap()を使用して、画像をPixmapとしてシーンに追加しました。特定の場所で大きい画像の上に小さい画像をオーバーレイ(ブリット)したいと思います。もう一度addPixmap()を呼び出すことで、小さい画像をシーンに追加することもできますが、常に左上隅に表示されます。それらの座標を自分で設定したいと思います。

どうすればこれを達成できますか?

ありがとう!

4

1 に答える 1

1

QGraphicsScene::addPixmap追加されたQGraphicsPixmapItemへのポインタを返します。その位置を設定したい場合は、次のようにすることができます。

QGraphicsPixmapItem *item = scene->addPixmap(yourPixmap);
item->setPos(50, 50); // sets position to scene coordinate (50, 50)

他の画像の上に画像をオーバーレイする場合は、z値について知っていることを確認してください。詳細については、QGraphicsItemのドキュメントを参照してください。基本的に、z値はスタック順序を決定します。

最後に、QGraphicsItemsの子育てについてよく理解してください。QGraphicsItemに親アイテムがある場合、それは(とりわけ)その座標がその親の座標で表されることを意味します。したがって、アイテムの位置が(0、0)であるが、シーン位置が(50、50)のアイテムの子である場合、子アイテムは(50、50)に表示されます。したがって、上記の例を考えると、次のことができます。

QGraphicsPixmapItem *childItem = new QGraphicsPixmapItem(item);

これにより、親が「item」である新しいアイテム「childItem」が作成されます。まだ設定されていないため、座標は(0、0)ですが、「item」の子であるため、シーン座標は(50、50)です。アイテムの親を指定する場合、子アイテムをシーンに追加する必要はないことに注意してください。暗黙的に追加されます。

于 2012-04-24T18:51:41.370 に答える