Описание класса QGraphicsItemGroup [модуль QtGui]
Класс QGraphicsItemGroup представляет группу элементов в качестве одного целого. Далее...
#include <QGraphicsItemGroup> Наследует QGraphicsItem.
Класс был добавлен в Qt 4.2.
Открытые функции
Дополнительные унаследованные члены
Подробное описание
Класс QGraphicsItemGroup представляет группу элементов в качестве одного целого.
QGraphicsItemGroup это специальный тип объединённого элемента, который рассматривает себя и всех своих потомков как один элемент (т.е. все элементы и геометрии для всех элементов объединяются вместе). Группы элементов обычно используются в инструментах представления, когда пользователь хочет сгруппировать несколько маленьких элементов в один большой, чтобы упростить перемещение и копирование элементов.
Если вы хотите только хранить элементы внутри других элементов, вы можете использовать любой QGraphicsItem непосредственно, передавая подходящего родителя функции setParentItem().
Функция boundingRect() QGraphicsItemGroup возвращает ограничивающий прямоугольник всех элементов группы. Дополнительно, у групп элементов handlesChildEvents() по-умолчанию разблокирован, поэтому все события, посылаемые члену группы, передаются элементу группы (т.е. выделение одного элемента группы приведёт к выделению всех).
Есть два способа создать группу элементов. Простейший и наиболее распространённый подход это передать список элементов (например, все выделенные элементы) в QGraphicsScene::createItemGroup(), которая возвращает новый элемент QGraphicsItemGroup. Другой подход это вручную создать элемент QGraphicsItemGroup, добавить его на сцену вызвав QGraphicsScene::addItem(), а затем добавить элементы в группу вручную, по-одному, вызывая addToGroup(). Чтобы разобрать ("разгруппировать") группу элементов, вы можете или вызвать QGraphicsScene::destroyItemGroup(), или вручную удалить все элементы из группы вызывая removeFromGroup().
Группируем все выделенные элементы вместе
QGraphicsItemGroup *group = scene->createItemGroup(scene->selecteditems());
Уничтожаем группу и удаляем элемент группы
scene->destroyItemGroup(group);
Операции добавления и удаления элементов сохраняет их положения и преобразования относительно сцены, в отличие от setParentItem(), где сохраняются позиции и преобразования элементов только относительно родителя.
Функция addtoGroup() заменяет родителя указанного элемента на элемент этой группы, сохраняя его положение и преобразование по отношению к сцене неизменными. Визуально это означает, что элементы, добавленные с помощью addToGroup(), будут сохранятся полностью неизменными в результате этой операции, независимо от текущего положения или преобразования элемента или группы; хотя положение и матрица элемента скорее всего изменятся.
Функция removeFromGroup() имеет похожую на setParentItem() семантику; она изменяет родителя элемента на родительский элемент группы. Также и с addToGroup(), положение и преобразование элемента по отношению к сцене сохраняются неизменными.
Смотрите также QGraphicsItem и Каркас графического представления.
Описание функций-членов
QGraphicsItemGroup::QGraphicsItemGroup ( QGraphicsItem * parent = 0 )
Создаёт QGraphicsItemGroup. parent передаётся в конструктор QGraphicsItem.
Смотрите также QGraphicsScene::addItem().
QGraphicsItemGroup::~QGraphicsItemGroup ()
Уничтожает QGraphicsItemGroup.
void QGraphicsItemGroup::addToGroup ( QGraphicsItem * item )
Добавляет указанный элемент item в эту группу. Родителем элемента станет эта группа, но его позиция и преобразование по отношению к сцене останутся неизменными.
Смотрите также removeFromGroup() и QGraphicsScene::createItemGroup().
void QGraphicsItemGroup::removeFromGroup ( QGraphicsItem * item )
Удаляет указанный элемент item из этой группы. Родителем элемента станет родительский элемент этой группы или 0, если у группы нет родителя. Его позиция и преобразование по отношению к сцене останутся неизменными.
Смотрите также addToGroup() и QGraphicsScene::destroyItemGroup().
|