QGraphicsItemGroup
类提供了一个容器,该容器将一组项目视为单个项目。
QGraphicsItemGroup
是一种特殊类型的复合项,它会将自身及其所有子项视为一个项(即,所有子项的所有事件和几何都合并在一起)。当用户希望将几个较小的 item 分组为一个大 item 时,通常在演示工具中使用 item 组,以简化 item 的移动和复制。
如果只想将 item 存储在其他项目中,则可以通过将合适的父级传递给 setParentItem()
来直接使用任何QGraphicsItem
。
QGraphicsItemGroup
的boundingRect()
函数返回项目组中所有项目的边界矩形。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()一样,项目的场景相对位置和变换保持不变。
网友评论