QGraphicsItemGroup Class
QGraphicsItemGroup 类提供了一个容器,可将一组项目视为单个项目。更多
Header: | #include <QGraphicsItemGroup> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QGraphicsItem |
公共类型
enum | anonymous { 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 是一种特殊类型的复合项目,它将自身及其所有子项视为一个项目(即所有子项的所有事件和几何形状都合并在一起)。在演示工具中使用项目组很常见,因为用户希望将几个较小的项目组合成一个大项目,以简化项目的移动和复制。
如果您只想将项目存储在其他项目中,您可以通过向setParentItem() 传递一个合适的父项,直接使用任何QGraphicsItem 。
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() 常量。
返回此组项及其所有子项的边界矩形。
[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.
© 2025 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.