如何在Qt 5中从QGraphicsScene中获取像素单击或鼠标悬停的RGB值

How could I get the RGB value from QGraphicsScene of a pixel click or hover by mouse in Qt 5?

本文关键字:鼠标 单击 悬停 RGB 像素 获取 Qt 中从 QGraphicsScene      更新时间:2023-10-16

我正在编写一个应用程序。我需要获取QGraphicsScene中显示的图像的位置,然后获取像素的RGB值。我该怎么做?似乎我需要重写鼠标移动事件,但我不知道该怎么做。如果有一个最小的例子,那就太好了。

我的代码托管在这里。

似乎我需要重写鼠标移动事件,但我不知道如何 点缀它。

覆盖任何其他C++函数的方式相同。有大量的例子,它是使用Qt gui C++ API的重要组成部分。但是,看起来您需要覆盖的不是鼠标移动事件,而是鼠标悬停移动事件:

void hoverMoveEvent(QGraphicsSceneHoverEvent * e) {
  // get pixel value at coordinates e->pos();
}

非常方便的是,悬停事件将为您提供相对于项目的位置。

您还必须setAcceptHoverEvents(true)图形项才能启用鼠标移动事件。

请记住,您只能获取QImage的像素值。因此,如果您使用的是QPixmap项目,则每次都必须进行大量转换才能QImage。创建自己的图形项在内部存储QImage并在其绘制事件中绘制它,很可能更有效。