如何从QGraphicsPixmapItem显示像素位置和颜色

Eti*_*ard 4 qt qpixmap qgraphicsview

我正在使用QGraphicsScene/View开发一个自定义小部件,我之前没有经验.

自定义小部件是一个图像查看器,需要跟踪鼠标移动并将信号发送到它的父对话框/窗口.信号将是鼠标光标下像素的位置及其颜色(RGB).状态栏将使用该信息.

我使用QGraphicsPixmapItem来显示从场景中的文件加载的图像.

谢谢.

pne*_*zis 5

首先,您必须mouseMoveEvent在自定义项中实现.在此功能中,您可以轻松获取调用该pos功能的鼠标位置.如果将项目的像素图转换为图像并调用该pixel函数,则可以获取rgb值.您应该考虑存储QImageas成员变量,以避免多次转换.最后,您必须发出自定义信号.示例代码如下:

void MyPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
{
    QPointF mousePosition = event->pos(); 
    QRgb rgbValue = pixmap().toImage().pixel(mousePosition.x(), mousePostion.y());

    emit currentPositionRgbChanged(mousePosition, rgbValue);
}
Run Code Online (Sandbox Code Playgroud)

请注意,不支持QGraphicsItemsQObject默认信号/插槽继承.你也应该继承QObject.这是做什么的QGraphicsObject.最后但并非最不重要我会建议您启用鼠标跟踪你的QGraphicsView