【发布时间】:2014-02-07 11:27:44
【问题描述】:
我有一个 QGraphicsScene,上面有一个 QGraphicsPixmapItem,显示一个图像。我也有一个显示场景的视图。我定义了一个 mousePressEvent() 函数,寻找鼠标点击视图。
视图设置为包含像素图:
//pixmap is a QGraphicsPixmapItem *
view->fitInView(pixmap, Qt::KeepAspectRatio);
我可以得到鼠标点击在视图坐标系中的位置:
//e is my QMouseEvent *
QPoint local_pt = view->mapFromGlobal(e->globalPos());
现在我想将此点映射到原始图像坐标,使用 QGraphicsView、QGraphicsScene、QGraphicsPixmapItem 的任意组合
我尝试过pixmap->boundingRect(),它给了我一个 QRectF(0,0 778x582),它具有适当的尺寸(原始图像),但我看不出 x 和 y 坐标与点击的本地点。
如何获取鼠标点击在原始图像坐标中的位置?
编辑:
这是最终奏效的:
//e is my QMouseEvent *
QPoint local_pt = view->mapFromGlobal(e->globalPos());
QPointF img_coord_pt = view->mapToScene(local_pt);
当我点击图片的左上角时,img_coord_pt 为 (0,0),右下角为 (image width, image height)。
【问题讨论】:
标签: qt qgraphicsitem qgraphicsscene