Qt 之 QGraphicsItemGroup

2020-08-14  本文已影响0人  水之心

参考 QGraphicsItemGroup

QGraphicsItemGroup 类提供了一个容器,该容器将一组项目视为单个项目。

QGraphicsItemGroup是一种特殊类型的复合项,它会将自身及其所有子项视为一个项(即,所有子项的所有事件和几何都合并在一起)。当用户希望将几个较小的 item 分组为一个大 item 时,通常在演示工具中使用 item 组,以简化 item 的移动和复制。

如果只想将 item 存储在其他项目中,则可以通过将合适的父级传递给 setParentItem() 来直接使用任何QGraphicsItem

QGraphicsItemGroupboundingRect()函数返回项目组中所有项目的边界矩形。QGraphicsItemGroup忽略其子项上的ItemIgnoresTransformations标志(即,相对于组项的几何形状,将子项视为可变形的)。

有两种构造项目组的方法。最简单,最常见的方法是将项目列表(例如所有选定的项目)传递给createItemGroup(),该列表将返回新的QGraphicsItemGroup项目。另一种方法是手动构造QGraphicsItemGroup项,然后调用addItem()将其添加到场景中,然后通过调用addToGroup()一次将项手动添加到组中。要拆除(“取消分组”) item 组,可以调用destroyItemGroup(),也可以通过调用removeFromGroup()手动从组中删除所有 item。

# Group all selected items together
group = scene.createItemGroup(scene.selecteditems())

# Destroy the group, and delete the group item
scene.destroyItemGroup(group)

与调用setParentItem()(仅保留子项的父项相对位置和转换)相反,添加和删除项的操作将保留项的场景相对位置和转换。

addtoGroup()函数可将目标项目重新添加到该项目组,从而使项目相对于场景的位置和变换保持完整。从视觉上看,这意味着通过addToGroup()添加的项目将由于此操作而保持完全不变,而不管该项目或组的当前位置或转换如何;尽管该 item 的位置和 rect 可能会发生变化。

removeFromGroup()函数的语义与 setParentItem()相似,它将项目作为项目组的父项目。与 addToGroup()一样,项目的场景相对位置和变换保持不变。

上一篇 下一篇

猜你喜欢

热点阅读