QT:我需要通过 QGraphicsScene 获取添加到 QGraphicsView 的图像坐标

Posted

技术标签:

【中文标题】QT:我需要通过 QGraphicsScene 获取添加到 QGraphicsView 的图像坐标【英文标题】:QT: I need to get coordinates of image added to QGraphicsView via QGraphicsScene 【发布时间】:2013-12-12 08:02:42 【问题描述】:

当我将小图像添加到 QGraphicsView 时,有没有办法获取图像像素的坐标?我为自定义类 QGraphicsView 使用了橡皮筋,但我只能获取 QGraphicsView 坐标。

【问题讨论】:

“获取图像像素坐标”到底是什么意思?你的意思是你想要屏幕坐标,图像上相对于原始图像的位置,以像素为单位,还是其他? 对不起,现在你提醒我了,确实不清楚。实际上我需要相对于原始图像的坐标,而不是 graphicsview 坐标。 【参考方案1】:

我猜你想从给定位置获取像素。假设给定位置来自鼠标位置。

说,一个继承自QGraphicsView的类:

MyView::MyView( QWidget *parent=0 ) :  QGraphicsView(parent)

    setScene( new QGraphicsScene( this ) );
    this->scene()->addPixmap(QPixmap::fromImage(this->image)); // this->image is a QImage

然后,实现鼠标事件

void MyView::mouseMoveEvent( QMouseEvent* event )

    QPointF pos =  mapToScene( event->pos() );
    QRgb rgb = this->image.pixel( ( int )pos.x(), ( int )pos.y() );

【讨论】:

谢谢。我需要这样的东西。有用。如果我不要求更多,是否可以仅在图像区域上限制橡皮筋?

以上是关于QT:我需要通过 QGraphicsScene 获取添加到 QGraphicsView 的图像坐标的主要内容,如果未能解决你的问题,请参考以下文章

简化 Qt 程序,我无法使用 QGraphicsScene 在 Qt 中显示图像

Qt:QGraphicsScene 在我期望的时候没有更新

Qt - QGraphicsScene 和 QGraphicsView 不更新更改?

Qt:选择的项目出现在 QGraphicsScene 的顶部

QT 在 QGraphicsScene 上方显示一个 QWidget

Qt等待用户在QGraphicsScene中选择项目