Прежде всего, вы должны внедрить mouseMoveEvent
в свой элемент.В этой функции вы можете легко получить положение мыши, вызвав функцию pos
.Вы можете получить значение rgb, преобразовав растровое изображение элемента в изображение и вызвав функцию pixel
.Вам следует рассмотреть возможность хранения QImage
в качестве переменной-члена, чтобы избежать нескольких преобразований.Наконец вы должны излучать пользовательский сигнал.Пример кода следующий:
void MyPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
{
QPointF mousePosition = event->pos();
QRgb rgbValue = pixmap().toImage().pixel(mousePosition.x(), mousePostion.y());
emit currentPositionRgbChanged(mousePosition, rgbValue);
}
Обратите внимание , что QGraphicsItems
не наследуется от QObject
, поэтому по умолчанию сигналы / слоты не поддерживаются .Вы также должны наследовать от QObject
.Это то, что делает QGraphicsObject
.И последнее, но не менее важное: я бы посоветовал вам включить отслеживание мыши на вашем QGraphicsView