Класс QGraphicsItemGroup
Класс QGraphicsItemGroup предоставляет контейнер, который обрабатывает группу элементов как единый элемент. Подробнее...
| Заголовок: | #include <QGraphicsItemGroup> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QGraphicsItem |
Этот класс был представлен в Qt 4.2.
Типы публичных
| перечисление | безымянный { Тип } |
Публичные функции
| QGraphicsItemGroup(QGraphicsItem *parent = nullptr) | |
| виртуальный | ~QGraphicsItemGroup() |
| void | addToGroup(QGraphicsItem *item) |
| void | removeFromGroup(QGraphicsItem *item) |
Переопределенные публичные функции
| виртуальный 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::безымянный
Значение, возвращаемое виртуальной функцией type().
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsItemGroup::Type |
10 |
Группа графических элементов |
Документация по функциям-членам
QGraphicsItemGroup::QGraphicsItemGroup(QGraphicsItem *parent = nullptr)
Создает QGraphicsItemGroup. parent передается конструктору QGraphicsItem.
См. также QGraphicsScene::addItem().
[virtual] QGraphicsItemGroup::~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.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qgraphicsitemgroup.html