QGraphicsItemGroup Class
QGraphicsItemGroup 类提供了一个容器,该容器将一组项目视为单个项目。更多内容...
| 头文件: | #include <QGraphicsItemGroup> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QGraphicsItem |
公共类型
| enum { Type } |
公共函数
| QGraphicsItemGroup(QGraphicsItem *parent = nullptr) | |
| virtual | ~QGraphicsItemGroup() |
| void | addToGroup(QGraphicsItem *item) |
| void | removeFromGroup(QGraphicsItem *item) |
重新实现的公共函数
| virtual QRectF | boundingRect() const override |
| virtual bool | isObscuredBy(const QGraphicsItem *item) const override |
| virtual QPainterPath | opaqueArea() const override |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| virtual int | type() const override |
详细说明
QGraphicsItemGroup 是一种特殊的复合项,它将自身及其所有子项视为一个项(即,所有子项的所有事件和几何信息都被合并在一起)。 在演示工具中,当用户希望将几个较小的项目组合成一个大项目,以便简化项目的移动和复制时,通常会使用项目组。
如果您只是想将项存储在其他项中,可以直接使用任何QGraphicsItem ,方法是将合适的父项传递给setParentItem()。
QGraphicsItemGroup 的boundingRect() 函数返回项目组中所有项目的边界矩形。QGraphicsItemGroup 会忽略其子项上的 ItemIgnoresTransformations 标志(即,就组项的几何形状而言,子项会被视为可变换的)。
创建项目组有两种方法。最简单且最常见的方法是将项目列表(例如所有选中的项目)传递给QGraphicsScene::createItemGroup(),该函数会返回一个新的 QGraphicsItemGroup 项目。 另一种方法是手动构建一个 QGraphicsItemGroup 项,通过调用QGraphicsScene::addItem() 将其添加到场景中,然后通过调用addToGroup() 逐个手动将项添加到组中。 要拆解(“取消分组”)一个项组,您可以调用QGraphicsScene::destroyItemGroup(),或者通过调用removeFromGroup()手动从该组中删除所有项。
// Group all selected items together
QGraphicsItemGroup *group = scene->createItemGroup(scene->selectedItems());
// Destroy the group, and delete the group item
scene->destroyItemGroup(group);添加和移除项的操作会保留项相对于场景的位置和变换,这与调用setParentItem() 不同,后者仅保留子项相对于父项的位置和变换。
addtoGroup() 函数将目标对象重新归入该对象组,同时保持该对象相对于场景的位置和变换不变。 从视觉上看,这意味着通过addToGroup() 添加的项在该操作后将完全保持不变,无论该项或该组的当前位置或变换如何;尽管该项的位置和矩阵可能会发生变化。
removeFromGroup() 函数的语义与setParentItem() 类似;它将项目重新归属到该项目组的父项目。与addToGroup() 一样,项目相对于场景的位置和变换保持不变。
另请参阅 QGraphicsItem 和图形视图框架。
成员函数文档
[explicit] QGraphicsItemGroup::QGraphicsItemGroup(QGraphicsItem *parent = nullptr)
构建一个 QGraphicsItemGroup。将parent 传递给QGraphicsItem 的构造函数。
另请参阅 QGraphicsScene::addItem()。
[virtual noexcept] QGraphicsItemGroup::~QGraphicsItemGroup()
void QGraphicsItemGroup::addToGroup(QGraphicsItem *item)
将指定的item 及其子项添加到此项组中。该项及其子项将被重新归入此组,但相对于场景的位置和变换将保持不变。
另请参阅 removeFromGroup() 和QGraphicsScene::createItemGroup()。
[override virtual] QRectF QGraphicsItemGroup::boundingRect() const
重写:QGraphicsItem::boundingRect() const。
返回该组项及其所有子项的边界矩形。
[override virtual] bool QGraphicsItemGroup::isObscuredBy(const QGraphicsItem *item) const
重写了:QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const。
[override virtual] QPainterPath QGraphicsItemGroup::opaqueArea() const
重新实现了:QGraphicsItem::opaqueArea() const。
[override virtual] void QGraphicsItemGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
重写了:QGraphicsItem::paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)。
void QGraphicsItemGroup::removeFromGroup(QGraphicsItem *item)
将指定的item 从该组中移除。该项将被重新关联到该组的父项,如果该组没有父项,则关联到0。其相对于场景的位置和变换将保持不变。
另请参阅 addToGroup() 和QGraphicsScene::destroyItemGroup()。
[override virtual] int QGraphicsItemGroup::type() const
重新实现了:QGraphicsItem::type() const。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.