Класс QGraphicsItemGroup
Класс QGraphicsItemGroup предоставляет контейнер, который обрабатывает группу элементов как единый элемент. Подробнее...
| Заголовок: | #include <QGraphicsItemGroup> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследуется от: | QGraphicsItem |
Открытые типы
| перечисление | anonymous { Type } |
Открытые функции
| 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 |
- 176 открытых функций, унаследованных от 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::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 и его дочерние элементы в эту группу элементов. Элемент и дочерние элементы будут переродителями в эту группу, но его положение и преобразование относительно сцены останутся неизменными.
См. также removeFromGroup() и QGraphicsScene::createItemGroup().
[override virtual] QRectF QGraphicsItemGroup::boundingRect() const
Переопределяет QGraphicsItem::boundingRect().
Возвращает ограничивающий прямоугольник этого элемента группы и всех его дочерних элементов.
[override virtual] bool QGraphicsItemGroup::isObscuredBy(const QGraphicsItem *item) const
Переопределяет QGraphicsItem::isObscuredBy().
[override virtual] QPainterPath QGraphicsItemGroup::opaqueArea() const
Переопределяет QGraphicsItem::opaqueArea().
[override virtual] void QGraphicsItemGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Переопределяет QGraphicsItem::paint().
void QGraphicsItemGroup::removeFromGroup(QGraphicsItem *item)
Удаляет указанный элемент item из этой группы. Элемент будет переродителями в родительский элемент этой группы или в 0, если у этой группы нет родителя. Его положение и преобразование относительно сцены останутся неизменными.
См. также addToGroup() и QGraphicsScene::destroyItemGroup().
[override 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/qt-5.12/qgraphicsitemgroup.html