Класс QGraphicsItemGroup
Класс QGraphicsItemGroup предоставляет контейнер, который обрабатывает группу элементов как один элемент. Подробнее...
| Заголовок: | #include <QGraphicsItemGroup> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QGraphicsItem |
Этот класс был представлен в Qt 4.2.
Типы public
| перечисление | anonymous { Type } |
Функции public
| QGraphicsItemGroup(QGraphicsItem *parent = nullptr) | |
| виртуальный | ~QGraphicsItemGroup() |
| void | addToGroup(QGraphicsItem *item) |
| void | removeFromGroup(QGraphicsItem *item) |
Реализованные функции public
| виртуальный QRectF | boundingRect() const override |
| виртуальный bool | isObscuredBy(const QGraphicsItem *item) const override |
| виртуальный QPainterPath | opaqueArea() const override |
| виртуальный void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| виртуальный int | type() const override |
Подробное описание
QGraphicsItemGroup — это специальный тип составного элемента, который обрабатывает себя и всех своих потомков как один элемент (т. е. все события и геометрии для всех потомков объединяются). Часто группы элементов используются в инструментах представления, когда пользователь хочет сгруппировать несколько меньших элементов в один большой элемент, чтобы упростить перемещение и копирование элементов.
Если вам нужно только хранить элементы внутри других элементов, вы можете использовать любой QGraphicsItem напрямую, передав соответствующего родителя в setParentItem().
Функция boundingRect() класса QGraphicsItemGroup возвращает ограничивающую прямоугольник всех элементов в группе элементов. 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 и Графический фреймворк представления.
Документация по типам членов
перечисление QGraphicsItemGroup::anonymous
Значение, возвращаемое виртуальной функцией type().
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItemGroup::Type |
10 |
Группа графических элементов |
Документация по функциям членов
QGraphicsItemGroup::QGraphicsItemGroup(QGraphicsItem *parent = nullptr)
Конструирует QGraphicsItemGroup. parent передается в конструктор QGraphicsItem.
См. также QGraphicsScene::addItem().
[virtual] QGraphicsItemGroup::~QGraphicsItemGroup()
Удаляет QGraphicsItemGroup.
void QGraphicsItemGroup::addToGroup(QGraphicsItem *item)
Добавляет данный 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.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qgraphicsitemgroup.html