2

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

另外在滚动和更改显示区域时是否引发了任何事件?

这是我正在谈论的屏幕: 在此处输入图像描述

谢谢

4

2 回答 2

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)这些对象的信号以跟踪滚动。

于 2013-07-29T12:26:47.900 回答
1

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

void QGraphicsView::fitInView(const QRectF & rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
于 2013-07-29T12:52:52.557 回答