まず、カスタムアイテムにmouseMoveEvent
を実装する必要があります。この機能では、pos
関数を呼び出すマウスの位置を簡単に取得できます。アイテムのピックスマップをイメージに変換してpixel
関数を呼び出すと、rgb値を取得できます。複数の変換を避けるには、メンバー変数としてQImage
を格納することを検討する必要があります。最後にカスタム信号を出力する必要があります。サンプルコードは次のとおりですので、信号は/スロットがをサポートしていませんデフォルトでQObject
から継承しないQGraphicsItems
こと
void MyPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
{
QPointF mousePosition = event->pos();
QRgb rgbValue = pixmap().toImage().pixel(mousePosition.x(), mousePostion.y());
emit currentPositionRgbChanged(mousePosition, rgbValue);
}
注意してください。 はQObject
から継承する必要があります。これはQGraphicsObject
の機能です。最後に重要なのは、mouse trackingをQGraphicsView