Класс QGraphicsItemGroup
Класс QGraphicsItemGroup предоставляет контейнер, который обрабатывает группу элементов как один элемент. Подробнее...
| Заголовок: | #include <QGraphicsItemGroup> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QGraphicsItem |
Открытые функции
| QGraphicsItemGroup(QGraphicsItem *parent = Q_NULLPTR) | |
| ~QGraphicsItemGroup() | |
| void | addToGroup(QGraphicsItem *item) |
| void | removeFromGroup(QGraphicsItem *item) |
Переопределённые открытые функции
| virtual QRectF | boundingRect() const |
| virtual bool | isObscuredBy(const QGraphicsItem *item) const |
| virtual QPainterPath | opaqueArea() const |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) |
| virtual int | type() const |
- 176 открытых функций унаследовано от QGraphicsItem
Дополнительные унаследованные члены
- 2 статических открытых члена, унаследованные от QGraphicsItem
- 24 защищённых функций, унаследованные от QGraphicsItem
Подробное описание
Класс QGraphicsItemGroup предоставляет контейнер, который обрабатывает группу элементов как один элемент.
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::QGraphicsItemGroup(QGraphicsItem *parent = Q_NULLPTR)
Конструирует QGraphicsItemGroup. parent передаётся конструктору QGraphicsItem.
См. также QGraphicsScene::addItem().
QGraphicsItemGroup::~QGraphicsItemGroup()
Удаляет QGraphicsItemGroup.
void QGraphicsItemGroup::addToGroup(QGraphicsItem *item)
Добавляет указанный item и его дочерние элементы в эту группу элементов. Элемент и дочерние элементы будут переродителем к этой группе, но его положение и преобразование относительно сцены останутся неизменными.
См. также removeFromGroup() и QGraphicsScene::createItemGroup().
[virtual] QRectF QGraphicsItemGroup::boundingRect() const
Переопределяет QGraphicsItem::boundingRect().
Возвращает ограничивающий прямоугольник этого элемента группы и всех его дочерних элементов.
[virtual] bool QGraphicsItemGroup::isObscuredBy(const QGraphicsItem *item) const
Переопределяет QGraphicsItem::isObscuredBy().
[virtual] QPainterPath QGraphicsItemGroup::opaqueArea() const
Переопределяет QGraphicsItem::opaqueArea().
[virtual] void QGraphicsItemGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR)
Переопределяет QGraphicsItem::paint().
void QGraphicsItemGroup::removeFromGroup(QGraphicsItem *item)
Удаляет указанный item из этой группы. Элемент будет переродителем к родителю этого элемента группы или к 0, если у этой группы нет родителя. Его положение и преобразование относительно сцены останутся неизменными.
См. также addToGroup() и QGraphicsScene::destroyItemGroup().
[virtual] int QGraphicsItemGroup::type() const
Переопределяет QGraphicsItem::type().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qgraphicsitemgroup.html