qt - 如何显示 QGraphicsPixmapItem 中的像素位置和颜色

标签 qt qgraphicsview qpixmap

我正在使用 QGraphicsScene/View 开发自定义小部件,但我之前没有相关经验。

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

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

谢谢。

最佳答案

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

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

注意QGraphicsItems 不继承自 QObject,因此默认情况下不支持信号/槽。您还应该继承QObject。这就是QGraphicsObject做。最后但并非最不重要的一点是,我建议您启用 mouse tracking在您的 QGraphicsView

关于qt - 如何显示 QGraphicsPixmapItem 中的像素位置和颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163271/

相关文章:

c++ - 黑莓 10 中的数据模型

qt - 为什么我的线宽在具有相同 QPen 宽度的 QGraphicsScene 中看起来不同?

c++ - 调用开始时 QPainter 失败

python - 如何将 StandardPixmap 添加到布局?

c++ - std::vector<unsigned char> 到 QPixmap

c++ - 如何混合 Qt、C++ 和 Obj-C/Cocoa

c++ - 为 QRectF 设置 topLeft 和 bottomRight

c++ - QTreeView - 删除某些元素的可扩展外观

c++ - QGraphicsView 周围的自定义边框

c++ - QGraphicsScene::fitInView() 仅适用于调整大小