-
alignment
和
setAlignment
函数可用于设置场景在视图中的对齐方式。 重要的是要注意,只有当视图可以完全显示场景,即视图不需要滚动条时,这才具有可见效果。
一般当场景大于视图会出现滚动条,是不能通过
setAlignment()
函数来设置场景在视图中的对齐方式的。
左对齐Qt::AlignLeft ; 向上对齐Qt::AlignTop ; 中心对齐Qt::AlignCenter
eg:setAlignment(Qt::AlignLeft | Qt::AlignTop);
-
dragMode
和
setDragMode
函数可用于获取和设置视图的拖动模式。 这是视图的最重要函数之一,它可以决定在视图上单击并拖动鼠标左键时会发生什么。我们将使用
QGraphicsView::DragMode
枚举设置不同的拖动模式。
QGraphicsView::NoDrag:忽略鼠标事件,不可以拖动。
QGraphicsView::ScrollHandDrag:光标变为手型,可以拖动场景进行移动。
QGraphicsView::RubberBandDrag:使用橡皮筋效果,进行区域选择,可以选中一个区域内的所有图形项。
-
isInteractive
和
setInteractive
函数允许检索和修改视图的交互行为。 交互式视图会响应鼠标和键盘(如果已实现),否则,所有鼠标和键盘事件都将被忽略,并且该视图只能用于查看并且不能与场景中的项目进行交互。
-
optimizationFlags
,
setOptimizationFlags
,
renderHints
,
setRenderHints
,
viewportUpdateMode
和
setViewportUpdateMode
函数分别用于获取和设置与视图的性能和渲染质量有关的参数。 在下面的示例项目中,我们将在实践中看到这些函数的用例。
-
在
dragMode
设置为
RubberBandDrag
模式的情况下,可以使用
rubberBandSelectionMode
和
setRubberBandSelectionMode
函数设置视图的项目选择模式。 可以设置以下内容,它们是
Qt::ItemSelectionMode
枚举中的条目:
Qt::ContainsItemShape、Qt::IntersectsItemShape、Qt::ContainsItemBoundingRect、Qt::IntersectsItemBoundingRect
-
sceneRect
和
setSceneRect
函数可用于获取和设置视图中场景的可视化区域。 显然,该值不必与
QGraphicsScene
类的
sceneRect
相同。
-
centerOn
函数可用于确保特定点或项目位于视图中心。
-
ensureVisible
函数可用于将视图滚动到特定区域(具有给定的边距)以确保它在视图中。 此函数适用于点,矩形和图形项目。
-
fitInView
函数与
centerOn
和
ensureVisible
非常相似,但主要区别在于,该函数还使用给定的宽高比处理参数缩放视图的内容以适合视图。 以下:
Qt::IgnoreAspectRatio、Qt::KeepAspectRatio、Qt::KeepAspectRatioByExpanding
eg:fitInView(m_view->sceneRect(), Qt::KeepAspectRatio); //场景大小适应视图View大小
-
itemAt函数可用于在视图中的特定位置检索项目。
我们已经了解到场景中的每个项目和场景中的每个项目都有各自的坐标系,我们需要使用映射函数将位置从一个位置转换到另一个位置,反之亦然。 视图也是如此。 视图还具有自己的坐标系,主要区别在于视图中的位置和矩形等实际上是根据像素进行测量的,因此它们是整数,但是场景和项目的位置使用实数,等等。 这是由于以下事实:场景和项目在视图上被查看之前都是逻辑实体,因此所有实数都将转换为整数,而整个场景(或部分场景)准备在屏幕上显示。下图可以帮助您更好地理解这一点: