在QGraphicsView中获取QGraphicsScene的可见区域

时间:2013-07-29 12:04:16

标签: c++ qt qt4 qgraphicsview

如果我将像素图设置为比窗口大的QGraphicsScene,它会添加滚动条,那么是否可以获得QGraphicsView中显示的内容?

滚动和更改显示区域时是否有任何事件?

这是我正在谈论的屏幕: enter image description here

由于

2 个答案:

答案 0 :(得分:10)

您可以按如下方式确定场景坐标中的可见区域:

QRect viewport_rect(0, 0, view->viewport()->width(), view->viewport()->height());
QRectF visible_scene_rect = view->mapToScene(viewport_rect).boundingRect();

您可以使用QGraphicsItem::mapFromScene将场景坐标转换为项目坐标。

您可以使用view->horizontalScrollBar()view->verticalScrollBar()来获取QScrollBar*个对象。连接到这些对象的valueChanged(int)信号以跟踪滚动。

答案 1 :(得分:1)

另外,请注意视口包含一个函数,可以将场景区域放入视图中,以便您可以使用以下方法查看所有区域: -

void QGraphicsView::fitInView(const QRectF & rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)