Описание класса QGraphicsItem
|
Константа | Значение | Описание |
---|---|---|
QGraphicsItem::NoCache | 0 | Значение по-умолчанию; кэширование все элементов отключено. QGraphicsItem::paint() вызывается каждый раз, когда необходимо перерисовать элемент. |
QGraphicsItem::ItemCoordinateCache | 1 | Кэширование включено для логической (локальной) координатной системы элемента. QGraphicsItem создаёт невидимый буфер с настраиваемым размером/разрешением, которые вы можете передать в QGraphicsItem::setCacheMode(). Качество отрисовки обычно падает в зависимости от разрешения кэша и преобразования элемента. При первом отображении элемента он отрисует себя в кэш, и данный кэш будет использоваться для каждого последующего отображения. Кэш также используется при преобразовании элемента. Чтобы настроить разрешение кэша вы можете повторно вызвать setCacheMode(). |
QGraphicsItem::DeviceCoordinateCache | 2 | Кэширование включено на уровне устройства рисования, в координатах устройства. Этот режим подходит для элементов которые могут перемещаться, но не поворачиваются, масштабируются или разрезаются. Если элемент преобразуется явно или неявно, кэш будет обновлён автоматически. В отличие от ItemCoordinateCacheMode, DeviceCoordinateCache всегда отрисовывает с максимальным качеством. |
Данное перечисление было введено в Qt 4.4.
Смотрите также QGraphicsItem::setCacheMode().
ItemVisibleHasChanged, ItemEnabledHasChanged, ItemSelectedHasChanged, ItemParentHasChanged, ItemSceneHasChanged
Этот перечисление описывает изменения состояний о который сообщается с помощью QGraphicsItem::itemChange(). Уведомления посылаются при смене состояний и, в некоторых случаях, могут быть сделаны коррекции (за подробностями обращайтесь к документации для каждого изменения).
Замечание: Будьте осторожны с вызовом функций над самимQGraphicsItem внутри itemChange(), так как некоторые вызовы функций могут привести к нежелательной рекурсии. Например, вы не можете вызыватьsetPos() в itemChange() на уведомление ItemPositionChange, так как функция setPos() снова вызовет itemChange(ItemPositionChange). Вместо этого вы можете вернуть новую, скорректированную позицию из itemChange().
Константа | Значение | Описание |
---|---|---|
QGraphicsItem::ItemEnabledChange | 3 | Изменяется состояние блокировки элемента. Если элемент является разблокированным, он станет заблокированным, и наоборот. Значением аргумента является новое состояние блокировки (т.е., true или false). Не вызывайте setEnabled() в itemChange() если это извещение доставлено. Вместо этого вы можете вернуть новое состояние из itemChange(). |
QGraphicsItem::ItemEnabledHasChanged | 13 | Изменилось состояние блокировки элемента. Значением аргумента является новое состояние блокировки (т.е., true или false). Не вызывайте setEnabled() в itemChange() если это извещение доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemMatrixChange | 1 | Изменяется матрица аффинных преобразований элемента. Это значение устарело; вместо него вы можете использовать ItemTransformChange. |
QGraphicsItem::ItemPositionChange | 0 | Изменяется расположение элемента. Это извещение высылается только когда изменяется позиция элемента по отношению к его родителю (т.е., в результате вызова setPos() или moveBy()). Значением аргумента является новая позиция (т.е. QPointF). Вы можете вызвать pos() чтобы получить исходную позицию. Не вызывайте setPos() или moveBy() в itemChange() если это уведомление доставлено; вместо этого вы можете вернуть новую, уточнённую позицию из itemChange(). После данного уведомления QGraphicsItem немедленно посылает уведомление ItemPositionHasChanged если изменилось расположение. |
QGraphicsItem::ItemPositionHasChanged | 9 | Изменилось расположение элемента. Это уведомление высылается только после изменения локального расположения элемента по отношению к родителю. Значением аргумента является новое расположение (такое же как pos()), и QGraphicsItem игнорирует возвращаемое значение для данного уведомления (т.е., уведомление не требует реакции). |
QGraphicsItem::ItemTransformChange | 8 | Изменилась матрица преобразований элемента. Это уведомление высылается только в случае изменения локальной матрицы преобразований (т.е. в результате вызова setTransform() или одной из вспомогательных функций преобразования, такой как rotate()). Значением аргумента является новая матрица, (т.е. QTransform); чтобы получить старую матрицу, вызовите transform(). Не вызывайте setTransform() или другие вспомогательные функции преобразования в itemChange() если это извещение доставлено; вместо этого вы можете вернуть новую матрицу из itemChange(). |
QGraphicsItem::ItemTransformHasChanged | 10 | Матрица преобразования элемента изменилась. Это уведомление высылается только после изменения локальной матрицы преобразований элемента. Значением аргумента является новая матрица (такая же как transform()), и QGraphicsItem игнорирует возвращаемое значение для данного уведомления (т.е. уведомление не требует реакции). |
QGraphicsItem::ItemSelectedChange | 4 | Изменяется состояние выделения элемента. Если элемент является выделенным, выделение снимется, и наоборот. Значением аргумента является новое состояние выделения (т.е. true или false). Не вызывайте setSelected() в itemChange() если это уведомление доставлено; вместо этого вы можете вернуть новое состояние выделения из itemChange(). |
QGraphicsItem::ItemSelectedHasChanged | 14 | Изменилось состояние выделения элемента. Значением аргумента является новое состояние выделения (т.е. true или false). Не вызывайте setSelected() в itemChange() если доставлено это извещение. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemVisibleChange | 2 | Изменяется состояние видимости элемента. Если элемент является видимым, он станет невидимым, и наоборот. Значением аргумента является новое состояние видимости (т.е. true или false). Не вызывайте setVisible() в itemChange() если доставлено это уведомление; вместо этого вы можете вернуть новое состояние видимости из itemChange(). |
QGraphicsItem::ItemVisibleHasChanged | 12 | Изменилось состояние видимости элемента. Значением аргумента является новое состояние видимости (т.е. true или false). Не вызывайте setVisible() в itemChange() если доставлено это извещение. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemParentChange | 5 | Изменяется родитель элемента. Значением аргумента является новый элемент-родитель (т.е. указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange() если доставлено это уведомление; вместо этого вы можете вернуть нового родителя из itemChange(). |
QGraphicsItem::ItemParentHasChanged | 15 | Изменился родитель элемента. Значением аргумента является новый родитель (т.е. указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange() если доставлено это событие. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemChildAddedChange | 6 | У элемента добавился потомок. Значением аргумента является новый дочерний элемент (т.е. указатель на QGraphicsItem). Не передавайте этот элемент в функцию setParentItem() любого элемента если доставлено это извещение. Возвращаемое значение не используется; вы ничего не можете настроить в данном уведомлении. Заметьте, что новый потомок может быть не до конца создан в момент прихода данного сообщения; вызов чисто виртуальных функций данного потомка может привести к краху программы. |
QGraphicsItem::ItemChildRemovedChange | 7 | У элемента удалён дочерний элемент. Значением аргумента является потомок который будет удалён (т.е. указатель на QGraphicsItem). Возвращаемое значение не используется; вы ничего не можете настроить в данном уведомлении. |
QGraphicsItem::ItemSceneChange | 11 | Элемент перемещается на новую сцену. Это уведомление также высылается когда элемент впервые добавляется на сцену и когда он удаляется со сцены. Значением аргумента является новая сцена (т.е. указатель на QGraphicsScene) или нулевой указатель если элемент удалён со сцены. Не перегружайте это изменение передавая элемент в функцию QGraphicsScene::addItem() если доставлено это уведомление; вместо этого вы можете вернуть новую сцену из itemChange(). Используйте эту возможность с осторожностью; отмена изменения сцены может быстро привести к нежелательной рекурсии. |
QGraphicsItem::ItemSceneHasChanged | 16 | Изменилась сцена элемента. Значением аргумента является новая сцена (т.е. указатель на QGraphicsScene). Не вызывайте setScene() в itemChange() если доставлено это уведомление. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemCursorChange | 17 | Изменяется курсор элемента. Значением аргумента является новый курсор (т.е. QCursor). Не вызывайте setCursor() в itemChange() если доставлено это уведомление. Вместо этого вы можете вернуть курсор из itemChange(). |
QGraphicsItem::ItemCursorHasChanged | 18 | Изменился курсор элемента. Значением аргумента является новый курсор (т.е. QCursor). Не вызывайте setCursor() если доставлено это уведомление. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemToolTipChange | 19 | Изменяется всплывающая подсказка элемента. Значением аргумента является новая всплывающая подсказка (т.е. QToolTip). Не вызывайте setToolTip() в itemChange(), если это уведомление доставлено. Вместо этого вы можете вернуть новую всплывающую подсказку из itemChange(). |
QGraphicsItem::ItemToolTipHasChanged | 20 | Изменилась всплывающая подсказка элемента. Значением аргумента является новая всплывающая подсказка (т.е. QToolTip). Не вызывайте setToolTip() если доставлено это уведомление. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemFlagsChange | 21 | Изменяются флаги элемента. Значением аргумента являются новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange() если это уведомление доставлено. Вместо этого вы можете вернуть новые флаги из itemChange(). |
QGraphicsItem::ItemFlagsHaveChanged | 22 | Изменились флаги элемента. Значением аргумента являются новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange() если это уведомление доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemZValueChange | 23 | Изменяется положение по оси Z элемента. Значением аргумента является новое положение по оси Z элемента (т.е. double). Не вызывайте setZValue() в itemChange(), если это уведомление доставлено. Вместо этого вы можете вернуть новое положение по оси Z из itemChange(). |
QGraphicsItem::ItemZValueHasChanged | 24 | Изменилось положение по оси Z элемента. Значением аргумента является новое положение по оси Z элемента (т.е. double). Не вызывайте setZValue(), если это уведомление доставлено. Возвращаемое значение игнорируется. |
Это перечисление описывает различные флаги, которые вы можете установить для элемента чтобы изменить различные особенности поведения элемента.
Все флаги по-умолчанию отключены.
Константа | Значение | Описание |
---|---|---|
QGraphicsItem::ItemIsMovable | 0x1 | Элемента поддерживает перемещение с помощью мыши. Если нажать на элемент с левой кнопкой мыши, а затем потянуть, то элемент будет перемещаться вместе с курсором. Если у элемента есть потомки, то они также будут перемещены. Если элемент является частью выделения, то все выделенные элементы также будут перемещены. Эта удобная особенность реализуется в обработчике событий мыши QGraphicsItem. |
QGraphicsItem::ItemIsSelectable | 0x2 | Элемент поддерживает выделение. Разблокирование этой особенности позволяет setSelected() переключать выделение элемента. Она также позволяет элементу выделяться автоматически в результате вызова QGraphicsScene::setSelectionArea(), нажатия на элемент левой кнопкой мыши или использования выделения резиновой нитью в QGraphicsView. |
QGraphicsItem::ItemIsFocusable | 0x4 | Элемент поддерживает фокус для ввода с клавиатуры (т.е. он является элементом ввода). Установка этого флага позволяет элементу получать фокус, который позволяет получать события нажатия клавиш в QGraphicsItem::keyPressEvent() и QGraphicsItem::keyReleaseEvent(). |
QGraphicsItem::ItemClipsToShape | 0x8 | Элемент обрезает (т.е. ограничивает) свою отрисовку внутри своей формы. Его функция paintEvent() не может рисовать вне его формы. Для сложных фигур эта функция может быть затратной. По-умолчанию он отключён. Это поведение навязывается QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был введён в Qt 4.3. |
QGraphicsItem::ItemClipsChildrenToShape | 0x10 | Элемент обрезает рисование всех своих потомков внутри своего контура. Элементы которые явно или неявно являются потомками данного элемента не могут быть отрисованы вне его контура. По-умолчанию этот флаг отключён; потомки могут отрисовываться везде. Это поведение навязывается QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был введён в Qt 4.3. |
QGraphicsItem::ItemIgnoresTransformations | 0x20 | Элемент игнорирует наследуемые преобразования (т.е. его позиция всё ещё связана с его родителем, но поворот, масштабирование или обрезание родителя или вида игнорируются). |
Этот флаг полезен для сохранения текстовой метки горизонтальной и немасштабированной, поэтому она будет читаема если вид преобразован. Если этот флаг установлен, геометрия вида элемента и сцены обрабатываются раздельно. Вы должны вызвать deviceTransform() для преобразования координат и определения коллизий в виде. По-умолчанию этот флаг отключён. Этот флаг был введён в Qt 4.3. Замечание: Если этот флаг установлен, вы всё равно можете масштабировать сам элемент, и это масштабирование будет влиять на его потомков.
Тип GraphicsItemFlags является определением типа для QFlags<GraphicsItemFlag>. Он хранит комбинацию значений (по ИЛИ) для GraphicsItemFlag.
Создаёт QGraphicsItem с заданным родителем parent.
Если parent равен 0, вы можете добавить элемент на сцену вызвав QGraphicsScene::addItem(). Элемент станет элементом верхнего уровня.
Смотрите также QGraphicsScene::addItem() и setParentItem().
Уничтожает QGraphicsItem и всех его потомков. Если этот элемент связан со сценой, то он будет убран с неё перед удалением.
Возвращает true если этот элемент может принимать события перетаскивания; в противном случает возвращает false. По-умолчанию элементы не принимают события перетаскивания; элементы являются для него "прозрачными".
Смотрите также setAcceptDrops().
Возвращает true если элемент возвращает события перемещения над ним курсора мыши (QGraphicsSceneHoverEvent); в противном случае возвращает false. По-умолчанию элементы не принимают данные события.
Эта функция была введена в Qt 4.4.
Смотрите также setAcceptHoverEvents() и setAcceptedMouseButtons().
Возвращает кнопки мыши от которых данный элемент принимает события. По-умолчанию принимаются все кнопки мыши.
Если элемент принимает кнопку мыши, то он получает все события нажатия для данной кнопки. Если элемент не принимает кнопку, то QGraphicsScene передаст событие мыши первому элементу под ним, который его примет.
Смотрите также setAcceptedMouseButtons() и mousePressEvent().
Эта виртуальная функция вызывается дважды для всех элементов из слота QGraphicsScene::advance() slot. В первой фазе все элементы вызываются с фазой phase == 0, показывающей что элемент на сцене начал отрисовываться, а затем все элементы вызываются с фазой phase == 1. Переопределите эту функцию для обновления элемента если вам нужна простая анимация, контролируемая сценой.
Реализация по-умолчанию ничего не делает.
Альтернативой данной функции для индивидуальной анимации является или использование QGraphicsItemAnimation или множественное наследование от QObject и QGraphicsItem и анимация элемента с помощью QObject::startTimer() и QObject::timerEvent().
Смотрите также QGraphicsItemAnimation и QTimeLine.
Эта чисто виртуальная функция определяет внешние границы элемента в виде прямоугольника; всё рисование должно быть ограничено внутри этого прямоугольника. QGraphicsView использует его для определения необходимости перерисовки элемента.
Хотя форма элемента может быть произвольной, для ограничения всегда используется прямоугольник и он не подвержен преобразованиям элементов (scale(), rotate() и т.д.).
Если вам необходимо изменить ограничивающий элемент прямоугольник, то сначала вы должны вызвать функцию prepareGeometryChange(). Она сообщает сцене о планируемом изменении что бы сцена могла обновить свой индекс геометрии; в противном случае сцена не узнает о новой геометрии элемента и результаты этого не определены (обычно на виде остаются ложные изображения).
Переопределите эту функцию чтобы позволить QGraphicsView определить какие части виджета, если такие есть, нуждаются в перерисовке.
Замечание: Для фигур которые рисуют контур/штриховку необходимо к ограничивающему прямоугольнику добавить половину пера. В случае использования антиалиасинга это не обязательно.
Пример:
QRectF CircleItem::boundingRect() const { qreal penWidth = 1; return QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth); }
Смотрите также boundingRegion(), shape(), contains(), The Graphics View Coordinate System, и prepareGeometryChange().
Возвращает область, ограничивающую элемент. Пространство координат возвращаемой области зависит от itemToDeviceTransform. Если в качестве параметра вы передадите ссылку на QTransform, то эта функция вернёт область в локальных координатах.
Ограничивающая область описывает грубый контур видимого содержимого элемента. Хотя её вычисление затратно, но она более точна чем boundingRect() и может помочь избежать ненужную отрисовку при обновлении элемента. Это очень эффективно для тонких элементов (т.е. линий или простых полигонов). Вы можете настроить точность ограничивающей области вызвав setBoundingRegionGranularity(). По-умолчанию точность равна 0; в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику.
itemToDeviceTransform является преобразованием из координат элемента в координаты устройства. Если вы хотите чтобы эта функция возвращала QRegion в координатах сцены, вы можете передать в качестве аргумента sceneTransform().
Эта функция была введена в Qt 4.4.
Смотрите также boundingRegionGranularity().
Возвращает точность ограничивающей области элемента; значение может изменяться от 0 до 1. Значение по-умолчанию равно 0 (т.е. наименьшая точность, в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику).
Эта функция была введена в Qt 4.4.
Смотрите также setBoundingRegionGranularity().
Возвращает режим кэширования элемента. По-умолчанию используется режим NoCache (т.е. кэширование отключено и отрисовка происходит незамедлительно).
Эта функция была введена в Qt 4.4.
Смотрите также setCacheMode().
Возвращает список потомков элемента. Элементы возвращаются в произвольном порядке.
Эта функция была введена в Qt 4.4.
Смотрите также setParentItem().
Возвращает ограничивающий прямоугольник всех потомков элемента (т.е. его детей, детей его детей и т.д.) в локальных координатах. Прямоугольник будет содержать всех потомок после того как они будут переведены в локальные координаты. Если у элемента нет потомков, эта функция вернёт пустой QRectF.
Эта функция не учитывает ограничивающий прямоугольник самого элемента; она возвращает суммарный ограничивающий прямоугольник только его потомков. Если вам надо включить ограничивающий прямоугольник элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью оператора QRectF::operator|().
Сложность этой функции увеличивается линейно; она определяет размер ограничивающего прямоугольника перебирая всех потомков.
Смотрите также boundingRect() и sceneBoundingRect().
Убирает фокус ввода клавиатуры от элемента.
Если у него был фокус, высылается событие потери фокуса для сообщения элементу того, что он потеряет фокус.
Только элементы которые установили флаг ItemIsFocusable или виждеты, установившие подходящую стратегию фокуса, могут получать фокус клавиатуры.
Смотрите также setFocus() и QGraphicsWidget::focusPolicy.
Возвращает true, если этот элемент столкнулся с другим элементом other; в противном случае возвращает false. Способ столкновения элементов определяется режимом mode. По-умолчанию значение режима mode равно Qt::IntersectsItemShape; элемент other сталкивается с этим элементом если он пересекается с ним, содержит его или содержится в его фигуре.
Реализация по умолчанию основана на пересечении фигур и она вызывает shape() для обоих элементов. Поскольку сложность произвольного пересечения фигуры с фигурой увеличивается на порядок когда фигуры сложные, эта операция может быть заметно занимающей время. У вас есть возможность переопределить эту функцию в подклассе QGraphicsItem чтобы предоставить собственный алгоритм. Это позволит вам использовать ограничения природы фигур ваших элементов чтобы улучшить производительность обнаружения столкновений. Например, столкновение двух непреобразованных идеально круглых элементов может быть очень эффективно определено сравнением их позиций и радиусов.
При переопределении этой функции и вызове shape() или boundingRect() элемента other не забывайте преобразовывать возвращаемые координаты в систему координат этого элемента прежде определения пересечения.
Смотрите также contains() и shape().
Возвращает true если элемент пересекается с путём path.
Тип столкновения определяется режимом mode. По-умолчанию значением режима mode равно Qt::IntersectsItemShape; путь path сталкивается с элементом если он пересекается с ним, содержит его или содержится в его фигуре.
Смотрите также collidesWithItem(), contains(), и shape().
Возвращает список элементов, которые сталкиваются с этим элементом.
Способ столкновения элементов определяется режимом mode. По-умолчанию значением режима mode является Qt::IntersectsItemShape; возвращаются все элементы чьи фигуры пересекаются с этим элементом или содержатся в нём.
Смотрите также QGraphicsScene::collidingItems() и collidesWithItem().
Возвращает ближайшего общего предка этого элемента и элемента other или 0 если или other равен 0, или у них нет общего предка.
Эта функция была введена в Qt 4.4.
Смотрите также isAncestorOf().
Возвращает true если этот элемент содержит точку point, заданную в локальных координатах; в противном случае возвращает false. Чаще всего эта функция вызывается QGraphicsView для определения находится ли элемент под курсором и поэтому реализация данной функции должна быть настолько быстрой, насколько это возможно.
По-умолчанию эта функция вызывает shape(), но вы можете переопределить её в подклассе для предоставления (возможно более эффективной) реализации.
Смотрите также shape(), boundingRect() и collidesWithPath().
Этот обработчик события может быть переопределён в подклассе для обработки событий контекстного меню. Параметр event содержит подробности об обрабатываемом событии.
Если вы игнорируете событие (т.е. вызываете QEvent::ignore()), event элемент будет передан другому элементу под этим элементом. Если ни один элемент не принял это событие, оно игнорируется сценой и передаётся виду.
Обычно на получение события контекстного меню открывается QMenu. Пример:
void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
QMenu menu;
QAction *removeAction = menu.addAction("Remove");
QAction *markAction = menu.addAction("Mark");
QAction *selectedAction = menu.exec(event->screenPos());
// ...
}
Реализация по умолчанию игнорирует это событие.
Смотрите также sceneEvent().
Возвращает форму текущего курсора элемента. Курсор мыши будет принимать эту форму когда будет находится над этим элементом. Смотрите список предопределённых объектов курсора для диапазона полезных форм.
Для элемента-редактор можно использовать курсор в виде прямой линии:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, будет использоваться курсор родителя.
Смотрите также setCursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
Возвращает пользовательские данные элемента для указанного ключа key в виде QVariant.
Пользовательские данные элемента полезны для хранения произвольных свойств в любом элементе. Пример:
static const int ObjectName = 0; QGraphicsItem *item = scene.itemAt(100, 50); if (item->data(ObjectName).toString().isEmpty()) { if (qgraphicsitem_cast<ButtonItem *>(item)) item->setData(ObjectName, "Button"); }
Qt не использует эту особенность для хранения данных; она предоставляется только для удобства пользователя.
Смотрите также setData().
Возвращает матрицу преобразования устройства этого элемента, используя viewportTransform для перевода из координат сцены в координаты устройства. Эта матрица может быть использована для перевода координат и геометрических фигур из локальной координатной системы этого элемента в систему координат области отображения (или любого другого устройства). Для перевода координат области отображения сначала необходимо инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // возвращает точку элемента (0, 0) в координатах области отображения вида rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // возвращает точку с координатами (100, 100) области просмотра вида в координатах элемента
Эта функция аналогична комбинации преобразования сцены элемента с преобразованием области отображения вида, но также понимает флаг ItemIgnoresTransformations. Преобразование устройства может быть использовано для точного преобразования координат (и определения столкновений) для непреобразуемых элементов.
Эта функция была введена в Qt 4.3.
Смотрите также transform(), setTransform(), scenePos() и Координатная система графического представления.
Этот обработчик события event может быть переопределён чтобы получать события начала перетаскивания для этого элемента. События начала перетаскивания генерируются как только курсор входит в область элемента.
Принимая это событие ( т.е. вызвав QEvent::accept()), элемент также примет событие отпускания в дополнение к событиям перетаскивания и окончания перетаскивания. В противном случае событие игнорируется и передаётся следующему элементу. Если событие принимается, элемент получит событие перетаскивания прежде чем управление вернётся в цикл обработки событий.
Общая реализация dragEnterEvent принимает или игнорирует событие event в зависимости от связанного с событием event типа данных. Пример:
CustomItem::CustomItem() { setAcceptDrops(true); ... } void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { event->setAccepted(event->mimeData()->hasFormat("text/plain")); }
По-умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по-умолчанию ничего не делает.
Смотрите также dropEvent(), dragMoveEvent() и dragLeaveEvent().
Этот обработчик события event может быть переопределён чтобы получать события окончания перетаскивания для этого элемента. События окончания перетаскивания генерируются как только курсор выходит за область элемента. В большинстве случаев вам не надо переопределять эту функцию, но она может быть полезна для восстановления состояния вашего элемента (например, выделение).
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
По-умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по-умолчанию ничего не делает.
Смотрите также dragEnterEvent(), dropEvent() и dragMoveEvent().
Этот обработчик события event может быть переопределён чтобы получать события перетаскивания для этого элемента. События перетаскивания генерируются если курсор перемещается внутри области элемента. В большинстве случаев вам не надо переопределять эту функцию; она используется для указания того, что только некоторые части вашего элемента могут принимать события бросания.
Вызов QEvent::ignore() или QEvent::accept() для события event показывает может элемент принимать событие бросание это этого события или нет. По-умолчанию событие event принимается, показывая что элемент разрешает событие бросания на указанной позиции.
По-умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по-умолчанию ничего не делает.
Смотрите также dropEvent(), dragEnterEvent() и dragLeaveEvent().
Этот обработчик события event может быть переопределён чтобы получать события бросания для этого элемента. Элементы могут получать события бросания только в том случае, если событие перетаскивания было принято.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
По-умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по-умолчанию ничего не делает.
Смотрите также dragEnterEvent(), dragMoveEvent() и dragLeaveEvent().
Если этот элемент является частью сцены которая просматривается QGraphicsView, эта вспомогательная функция будет пытаться прокрутить вид чтобы обеспечить видимость прямоугольника rect в области просмотра вида. Если прямоугольник rect является пустым (по-умолчанию), QGraphicsItem будет использовать ограничивающий прямоугольник элемента. xmargin и ymargin это число пикселов, которые вид должен использовать для отступов.
Если указанный прямоугольник не может быть достигнут, содержимое прокручивается до ближайшего годного положения.
Если этот элемент не просматривается QGraphicsView, то эта функция ничего не делает.
Смотрите также QGraphicsView::ensureVisible().
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin):
Возвращает флаги элемента. Флаги описывают какие настраиваемые особенности элемента включены, а какие - нет. Например, если флаги включают ItemIsFocusable, элемент может получать фокус ввода.
По-умолчанию все флаги отключены.
Смотрите также setFlags() и setFlag().
Этот обработчик события event может быть переопределён чтобы получать события получения фокуса для этого элемента. Реализация по-умолчанию вызывает ensureVisible().
Смотрите также focusOutEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события потери фокуса для этого элемента. Реализация по-умолчанию ничего не делает.
Смотрите также focusInEvent() и sceneEvent().
Получает ввод клавиатуры.
Элемент будет получать весь ввод клавиатуры от сцены до тех пор пока не произойдёт одно из следующих событий:
Когда элемент получает ввод клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет ввод клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события могут быть использованы для определения когда элемент получает или теряет ввод клавиатуры с помощью других способов кроме получения фокуса ввода.
Почти никогда не надо явно получать ввод клавиатуры в Qt, так как Qt получает и освобождает его разумно. В частности, Qt получает ввод клавиатуры когда ваш элемент получает фокус ввода и освобождает его когда элемент теряет фокус ввода или когда элемент невидим.
Заметьте, что только видимые элементы могут получить ввод клавиатуры. Вызов grabKeyboard() для невидимых элементов не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
Смотрите также ungrabKeyboard(), grabMouse() и setFocus().
Получает ввод мыши.
Этот элемент будет получать все события мыши для сцены, пока не произойдёт одно из следующих событий:
Когда элемент получает ввод мыши, он получает событие QEvent::GrabMouse. Когда он теряет ввод мыши, он получает событие QEvent::UngrabMouse. Эти события могут быть использованы для определения когда элемент получает или теряет ввод мыши с помощью других способов кроме получения кнопок мыши.
Почти никогда не надо явно получать ввод мыши в Qt, так как Qt получает и освобождает его разумно. В частности, Qt получает ввод мыши когда вы нажимаете кнопку мыши и сохраняет его пока вы не освободите последнюю кнопку мыши. Также, виджеты Qt::Popup неявно вызывают grabMouse() когда показываются и ungrabMouse() когда прячутся.
Заметьте, что только видимые элементы могут получать ввод мыши. Вызов grabMouse() для невидимых элементов не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().
Возвращает указатель на группу данного элемента или 0, если этот элемент не является членом группы.
Смотрите также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
Возвращает true если этот элемент обрабатывает события потомков, ( т.е. все предназначенные его потомкам события пересылаются ему вместо них); в противном случае возвращает false.
Это свойство полезно для групп элементов; оно позволяет одному элементу обрабатывать события от имени всех его потомков вместо того чтобы они обрабатывали свои события сами.
По-умолчанию возвращается false; потомки сами обрабатывают свои события. Исключением является элемент QGraphicsItemGroup, у него эта функция возвращает true.
Смотрите также setHandlesChildEvents().
Возвращает true если у данного элемента установлен курсор; в противном случае возвращает false.
По-умолчанию у элемента нет установленного курсора. cursor() вернёт стандартный курсор в виде стрелки.
Смотрите также unsetCursor().
Возвращает true если у этого элемента есть фокус ввода клавиатуры; в противном случае возвращает false.
Смотрите также QGraphicsScene::focusItem(), setFocus() и QGraphicsScene::setFocusItem().
Прячет элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(false).
Смотрите также show() и setVisible().
Этот обработчик события event может быть переопределён чтобы получать события входа курсора мыши в область элемента над этим элементом. Реализация по-умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события выхода курсора за границы элемента. Реализация по-умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события перемещения курсора мыши над элементом. Реализация по-умолчанию ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события метода ввода для этого элемента. Реализация по умолчанию игнорирует это событие.
Смотрите также inputMethodQuery() и sceneEvent().
Этот метод важен только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента чтобы обеспечить поддержку сложных операций методов ввода, таких как поддержку окружающего текста и преобразований. query указывает какое свойство запрашивается.
Смотрите также inputMethodEvent().
Устанавливает фильтр событий для этого элемента на filterItem, в результате чего все события этого элемента сначала проходят через функцию элемента filterItem sceneEventFilter().
Чтобы фильтровать события другого элемента, установите для него в качестве фильтра событий этот элемент. Пример:
QGraphicsScene scene; QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20)); QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20)); line->installSceneEventFilter(ellipse); // события элемента line фильтруются функцией sceneEventFilter() элемента ellipse. ellipse->installSceneEventFilter(line); // события элемента ellipse фильтруются функцией sceneEventFilter() элемента line.
Элемент может фильтровать события только для элементов этой же сцены. Также элемент не может фильтровать собственные события; вместо этого вы можете переопределить sceneEvent().
Элементы должны принадлежать сцене чтобы могли быть установлены и использованы фильтры событий сцены.
Смотрите также removeSceneEventFilter(), sceneEventFilter() и sceneEvent().
Возвращает true если этот элемент является предком элемента child (т.е. если этот элемент является родителем child или родителем одного из предков child).
Смотрите также parentItem().
Возвращает true если элемент разблокирован; в противном случае возвращает false.
Смотрите также setEnabled().
Возвращает true если ограничивающий прямоугольник этого элемента полностью закрыт непрозрачной фигурой любого сталкивающегося элемента, находящегося выше него (т.е. с большим значением по оси Z чем у этого элемента).
Её реализация основана на вызове isObscuredBy(), которую вы можете переопределить чтобы предоставить собственный алгоритм сокрытия.
Смотрите также opaqueArea().
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову isObscured(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Возвращает true если прямоугольник rect полностью скрыт непрозрачной фигурой любого сталкивающегося с ним элемента, находящегося выше него (т.е. с большим значением по оси Z чем у этого элемента).
В отличие от варианта функции isObscured() по-умолчанию, эта функция не вызывает isObscuredBy().
Эта функция была введена в Qt 4.3.
Смотрите также opaqueArea().
Возвращает true если ограничивающий прямоугольник этого элемента полностью закрыт непрозрачной фигурой элемента item.
Базовая реализация переводит область элемента item opaqueArea() в координатную систему этого элемента, а затем проверяет содержится ли boundingRect() этого элемента в данной фигуре полностью.
Вы можете переопределить эту функцию чтобы предоставить собственный алгоритм определения закрывается ли этот элемент элементом item.
Смотрите также opaqueArea() и isObscured().
Возвращает true если этот элемент выбран; в противном случае возвращает false.
Элементы группы наследуют состояние выделения группы.
Элементы по умолчанию не выделены.
Смотрите также setSelected() и QGraphicsScene::setSelectionArea().
Возвращает true если данный элемент находится под курсором одном из видов; в противном случае возвращает false.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsScene::views() и QCursor::pos().
Возвращает true если элемент видим; в противном случае возвращает false.
Заметьте, что общая видимость элемента не связана с тем, отображается ли он QGraphicsView или нет.
Смотрите также setVisible().
Возвращает true если элемент видимым родителю parent; в противном случае возвращает false. parent может быть равен 0, в этом случае эта функция вернёт является ли элемент видимым сцене или нет.
Элемент может быть невидим предку даже если isVisible() равно true. Если любой предок спрятан, сам элемент будет неявно спрятан, в этом случае эта функция вернёт false.
Эта функция была введена в Qt 4.4.
Смотрите также isVisible() and setVisible().
Возвращает true если этот элемент является виджетом (т.е. QGraphicsWidget); в противном случает возвращает false.
Эта функция была введена в Qt 4.4.
Возвращает true если этот элемент является окном QGraphicsWidget; в противном случае возвращает false.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsWidget::windowFlags().
Эта виртуальная функция вызывается QGraphicsItem для оповещения пользовательских элементов о том, что изменилась некоторая часть состояний элемента. Переопределив эту функцию вы сможете реагировать на события и, в некоторых случаях ( в зависимости от change), произвести настройку.
change это параметр элемента, который изменяется. value это новое значение; тип значения зависит от change.
Пример:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionChange && scene()) { // value это новое положение. QPointF newPos = value.toPointF(); QRectF rect = scene()->sceneRect(); if (!rect.contains(newPos)) { // Сохраняем элемент внутри прямоугольника сцены. newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left()))); newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top()))); return newPos; } } return QGraphicsItem::itemChange(change, value); }
Реализация по-умолчанию ничего не делает и возвращает value.
Замечание: Некоторые функции QGraphicsItem не могут быть вызваны в переопределении этой функции; за подробностями обращайтесь к документации по GraphicsItemChange.
Смотрите также GraphicsItemChange.
Этот обработчик события event может быть переопределён чтобы получать события нажатия клавиш для этого элемента. Реализация по умолчанию игнорирует это событие. Если вы переопределите этот обработчик, то по-умолчанию событие будет принято.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Заметьте, что события нажатия клавиатуры получаются только тем элементами, для которых установлен флаг ItemIsFocusable и у которых есть фокус ввода клавиатуры.
Смотрите также keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события отпускания клавиш для этого элемента. Реализация по умолчанию игнорирует это событие. Если вы переопределите этот обработчик, то по-умолчанию событие будет принято.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Заметьте, что события нажатия клавиатуры получаются только тем элементами, для которых установлен флаг ItemIsFocusable и у которых есть фокус ввода клавиатуры.
Смотрите также keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
Переводит точку point, находящуюся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённые координаты.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также mapFromParent(), mapFromScene(), transform(), mapToItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также mapToItem(), mapFromParent(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Отображает полигон polygon, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает полученный таким образом полигон.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также mapToItem(), mapFromParent(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённый путь.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также mapFromParent(), mapFromScene(), mapToItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromItem(item, QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённую координату.
Смотрите также mapFromItem(), mapFromScene(), transform(), mapToParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToParent(), mapFromItem(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Отображает полигон polygon, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает полученный таким образом полигон.
Смотрите также mapToParent(), mapToItem(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённый путь.
Смотрите также mapFromScene(), mapFromItem(), mapToParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromItem(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromParent(QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённую координату.
Смотрите также mapFromItem(), mapFromParent(), transform(), mapToScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToScene(), mapFromItem(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит полигон polygon, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый полигон.
Смотрите также mapToScene(), mapFromParent(), transform() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый путь.
Смотрите также mapFromParent(), mapFromItem(), mapToScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapFromScene(QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённую координату.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также mapToParent(), mapToScene(), transform(), mapFromItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый прямоугольник в виде полигона.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также mapToParent(), mapToScene(), mapFromItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый полигон.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также mapToParent(), mapToScene(), mapFromItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый путь.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также mapToParent(), mapToScene(), mapFromItem() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToItem(item, QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённую координату. Если у элемента нет родителя, точка point будет преобразована в систему координат сцены.
Смотрите также mapToItem(), mapToScene(), transform(), mapFromParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый прямоугольник в виде полигона. Если у элемента нет родителя, прямоугольник rect будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый полигон. Если у элемента нет родителя, полигон polygon будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый путь. Если у элемента нет родителя, путь path будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToParent(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToParent(QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённую координату.
Смотрите также mapToItem(), mapToParent(), transform(), mapFromScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый полигон.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый путь.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову mapToScene(QPointF(x, y)).
Этот обработчик события event может быть переопределён чтобы получать события двойного клика для этого элемента.
При двойном клике на элементе, он сначала получит событие нажатия кнопки мыши, затем отпускания кнопки мыши (т.е. клик), затем событие двойного клика и, наконец, событие отпускания кнопки мыши.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по-умолчанию вызывает mousePressEvent(). Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseDoubleClickEvent().
Смотрите также mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события перемещения мыши для этого элемента. Если вы получаете этот элемент, вы можете быть уверены что он также получает события нажатия кнопок мыши и что у этого элемента есть фокус ввода мыши.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по-умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseMoveEvent().
Смотрите также mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события нажатия клавиш мыши для этого элемента. Событие нажатия кнопок мыши доставляется только тем элементам, которые принимают нажатую кнопку. По-умолчанию принимаются все кнопки мыши, но вы можете изменить это вызвав setAcceptedMouseButtons().
Событие нажатия кнопок мыши определяет какой элемент должен получить фокус ввода мыши (смотрите QGraphicsScene::mouseGrabberItem()). Если вы не переопределите эту функцию, событие нажатия передастся ближайшему элементу под этим элементом, и больше событий мыши данному элементу доставлено не будет.
Если вы не переопределите эту функцию, событие event будет принято по-умолчанию (смотрите QEvent::accept()), и этот элемент получит фокус ввода мыши. Это позволит элементу получать дальнейшие события перемещения, отпускания и двойного клика. Если вы вызовите QEvent::ignore() для event, этот элемент потеряет фокус ввода мыши и event будет передан ближайшему элементу под ним. Больше событий мыши данному элементу доставлено не будет, пока не будет получено событие нажатия кнопки мыши.
Реализация по-умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mousePressEvent().
Смотрите также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события отпускания клавиш мыши для этого элемента.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по-умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseReleaseEvent().
Смотрите также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().
Перемещает элемент на dx точек по горизонтали и dy точек по вертикали. Эта вспомогательная функция эквивалента вызову setPos(pos() + QPointF(dx, dy)).
Эта виртуальная функция возвращает форму, представляющую область где этот элемент не является прозрачным. Область является непрозрачной, если она заполнена с использованием непрозрачной кисти или цвета (т.е. не прозрачна).
Эта функция используется isObscuredBy(), которая вызывается нижележащими элементами для определения не закрыты ли они этим элементом.
Реализация по-умолчанию возвращает пустой путь QPainterPath, показывая что этот элемент полностью прозрачен и не закрывается другими элементами.
Смотрите также isObscuredBy(), isObscured() и shape().
Эта функция, обычно вызываемая QGraphicsView, отрисовывает содержимое элементов в локальных координатах.
Переопределите эту функцию в подклассе QGraphicsItem чтобы предоставить реализацию отрисовки элемента с использованием painter. Параметр option предоставляет опции стилей для элементов, такие как его состояние, область отображения и подсказки степени его детализации. Аргумент widget является необязательным. Если он задан, он указывает на виджет, который отрисовывается; в противном случае он равен 0. Для кэшированного рисования widget всегда равен 0.
void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); }
Толщина пера по-умолчанию равна 0 и это перо инициализируется кистью QPalette::Text из палитры устройства рисования. Кисть инициализируется QPalette::Window.
Убедитесь что ограничиваете рисование внутри границ boundingRect() чтобы избежать погрешностей отрисовки (так как QGraphicsView не ограничивает рисование за вас). В частности, когда QPainter отрисовывает контур фигуры используя установленный QPen, половина контура будет нарисована вне рисуемой фигуры (т.е. если толщина пера равна двум единицам, вы должны рисовать контур с отступом в одну единицу от boundingRect()). QGraphicsItem не поддерживает использование косметического пера с нулевой шириной.
Все рисования происходят в локальных координатах.
Смотрите также setCacheMode(), QPen::width() и Item Coordinates.
Возвращает указатель на родительский элемент. Если у этого элемента нет родителя, возвращается 0.
Смотрите также setParentItem() и children().
Возвращает указатель на родительский виджет элемента. Родительским виджетом элемента является его ближайший родитель, являющийся виджетом.
Эта функция была введена в Qt 4.4.
Смотрите также parentItem() и childItems().
Возвращает положение элемента в родительских координатах. Если у элемента нет родителя, положение задаётся в координатах сцены.
Позиция элемента описывает ее базис (локальные координаты (0, 0)) в родительских координатах; эта функция возвращает тоже что и mapToParent(0, 0).
Для удобства вы также можете вызвать scenePos() для определения позиции элемента в координатах сцены вне зависимости от его родителя.
Смотрите также x(), y(), setPos(), matrix() и Координатная система графического представления.
Подготавливает элемент для смены геометрии. Вызывайте эту функцию перед сменой ограничивающего прямоугольника элемента чтобы поддерживать индекс QGraphicsScene в актуальном состоянии.
При необходимости prepareGeometryChange() вызовет update().
Пример:
void CircleItem::setRadius(qreal newRadius) { if (radius != newRadius) { prepareGeometryChange(); radius = newRadius; } }
Смотрите также boundingRect().
Удаляет фильтр событий этого элемента от filterItem.
Смотрите также installSceneEventFilter().
Сбрасывает матрицу преобразований этого элемента. Это эквивалентно вызову setTransform(QTransform()).
Эта функция была введена в Qt 4.3.
Смотрите также setTransform() и transform().
Поворачивает текущее преобразование элемента на angle градусов по часовой стрелке вокруг его базовой точки. Чтобы повернуть вокруг произвольной точки (x, y), вам необходимо скомбинировать перемещение и поворот с помощью setTransform().
Пример:
// Поворачивает элемент на 45 градусов вокруг (0, 0). item->rotate(45); // Поворачивает элемент на 45 градусов вокруг точки (x, y). item->setTransform(QTransform().translate(x, y).rotate(45).translate(-x, -y));
Смотрите также setTransform(), transform(), scale(), shear() и translate().
Масштабирует текущее преобразование элемента на (sx, sy) вокруг его базовой точки. Чтобы масштабировать около произвольной точки (x, y), вам необходимо скомбинировать перемещение и поворот с помощью setTransform().
Пример:
// Масштабирует элемент на 3x2 от его базовой точки item->scale(3, 2); // Масштабирует элемент на 3x2 от точки (x, y) item->setTransform(QTransform().translate(x, y).scale(3, 2).translate(-x, -y));
Смотрите также setTransform(), transform(), rotate(), shear() и translate().
Возвращает текущую сцену элемента или 0, если элемент не расположен на сцене.
Чтобы добавить или переместить элемент на сцену, вызовите QGraphicsScene::addItem().
Возвращает ограничивающий прямоугольник элемента в координатах сцены комбинируя sceneTransform() с boundingRect().
Смотрите также boundingRect() и Координатная система графического представления.
Эта виртуальная функция получает события для этого элемента. Переопределите эту функцию для перехвата событий прежде чем они будут направлены специализированным обработчикам событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().
Возвращает true если событие было распознано и обработано; в противном случае (например, тип события не был распознан) возвращается false.
event это перехватываемое событие.
Фильтрует события для элемента watched. event это фильтруемое событие.
Переопределение этой функции в подклассе делает возможным использование элемента в качестве фильтра для других элементов, перехватывая все события которые посылаются им прежде чем они смогут их обработать.
Переопределённая функция должна возвращать true чтобы предотвратить дальнейшую обработку данного события, обеспечивая что оно не будет доставлено другим наблюдающим элементам, или вернуть false, показывая что элемент должен быть передан дальше по системе событий.
Смотрите также installSceneEventFilter().
Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).
Смотрите также pos(), sceneTransform() и Координатная система графического представления.
Возвращает матрицу преобразований сцены этого элемента. Эта матрица может быть использована для перевода координат и геометрических фигур из локальной координатной системы этого элемента в систему координат сцены. Для перевода координат сцены сначала необходимо инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // возвращает QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // возвращает QPointF(0, 0);
В отличие от transform(), которая возвращает только локальные преобразования элемента, эта функция включает позицию элемента (и всех его родителей).
Эта функция была введена в Qt 4.3.
Смотрите также transform(), setTransform(), scenePos() и Координатная система графического представления.
Прокручивает содержимое прямоугольника rect на dx, dy. Если прямоугольник rect является пустым (по-умолчанию), тогда прокручивается ограничивающий прямоугольник элемента.
Прокручивание предоставляет быструю альтернативу простой перерисовке когда содержимое элемента (или его частей) сдвигается вертикально или горизонтально. В зависимости от текущей трансформации и возможностей устройства рисования (т.е. области отображения), эта операция может состоять из простого перемещения пикселей из одной области в другую с использованием memmove(). В большинстве случаев это быстрее чем перерисовка всей области.
После прокрутки элемент запросит обновление новых отображаемых областей. Если прокрутка не поддерживается (например вы рисуете на области отображения OpenGL, у которого нет выигрыша от оптимизации прокрутки), эта функция эквивалентна вызову update(rect).
Эта функция была введена в Qt 4.4.
Смотрите также boundingRect().
Если on равно true, этот элемент будет принимать события перетаскивания и бросания; в противном случае он будет прозрачен для них. По-умолчанию элемент не принимает данные события.
Смотрите также acceptDrops().
Если enabled равно true, этот элемент будет принимать события перемещения над ним курсора мыши; в противном случае он будет игнорировать их. По-умолчанию элементы не принимают данные события.
События перемещения мыши доставляются в том случае, когда нет других элементов, обладающих фокусом ввода мыши. Они посылаются когда курсор мыши входит в область элемента, когда он перемещается внутри его области и когда он её покидает. События перемещения мыши обычно используются для подсветки элемента когда на него наводится курсор и для отслеживания курсора мыши когда он находится над элементом (эквивалентноQWidget::mouseTracking).
Элементы-родители получают события входа курсора мыши в область элемента прежде потомков и событие выхода курсора за область элемента после них. Элемент не получает событие выхода за область элемента если курсор переходит в область другого потомка; он не получит его пока курсор не выйдет за область, включающую области всех его потомков.
Если родитель обрабатывает события потомков (setHandlesChildEvents()), он будет получать события перемещения мыши, перемещения и бросания когда переходит от одного дочернего элемента к другому, но он не получить ни события входа в область элемента и выхода за неё, ни события начала и окончания перетаскивания от имени его потомков.
QGraphicsWidget с декорацией окна будет принимать события перемещения мыши независимо от значения acceptHoverEvents().
Эта функция была введена в Qt 4.4.
Смотрите также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
Устанавливает кнопки buttons мыши для которых элемент будет принимать события.
По-умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он получит фокус ввода мыши когда ему будет доставлено событие нажатия этой кнопки. Если элемент не принимает нажатие кнопки мыши, QGraphicsScene передаст это событие ближайшему элементу под ним, которые его примет.
Чтобы заблокировать события мыши для элемента (т.е. сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
Смотрите также acceptedMouseButtons() и mousePressEvent().
Устанавливает точность ограничивающей области элемента равной granularity; значение может изменяться от 0 до 1. Значение по-умолчанию равно 0 (т.е. наименьшая точность, в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику).
Точность используется boundingRegion() для вычисления насколько точным должен быть ограничивающий регион элемента. Максимальная точность равна 1, в этом случае boundingRegion() вернёт наилучший возможный для соответствующего устройства контур (т.е. для области отображения QGraphicsView получится область с точностью до пиксела). Минимальная точность равна 0. Значение granularity описывает коэффициент между разрешением устройства и разрешением ограничивающего региона (т.е. значение 0.25 предоставит регион где каждый кусочек соответствует 4x4 пикселам/единицам устройства).
Эта функция была введена в Qt 4.4.
Смотрите также boundingRegionGranularity().
Устанавливает режим кэширования элемента равным mode.
Необязательный аргумент logicalCacheSize используется только для режима ItemCoordinateCache и описывает разрешение буфера кэша; если logicalCacheSize равен (100, 100), QGraphicsItem будет размещён в 100x100 пикселях в графической памяти независимо от логического размера самого элемента. По-умолчанию QGraphicsItem использует размер boundingRect(). Для всех режимов кэширования кроме ItemCoordinateCache, logicalCacheSize игнорируется.
Кэширование может заметно ускорить отрисовку если отрисовка элемента занимает затрачивает много времени. В некоторых случаях кэш может замедлить отрисовку, в частности, когда элемент тратит меньше времени на отрисовку чем QGraphicsItem тратит на отрисовку из кэша. Если кэширование включено, функция элемента paint() будет вызываться только один раз для каждого вызова update(); для любого последующего запроса перерисовки каркас графического представления будет использовать кэшированное изображение. Этот подход работает достаточно хорошо с QGLWidget, который хранит кэш в виде текстур OpenGL.
Не забывайте о том, что возможно потребуется изменить лимит кэша QPixmapCache чтобы получить оптимальную производительность.
Вы можете прочитать больше о различных режимах кэша в документации CacheMode.
Эта функция была введена в Qt 4.4.
Смотрите также cacheMode(), CacheMode и QPixmapCache::setCacheLimit().
Устанавливает текущую форму курсора элемента равной cursor. Курсор мыши будет принимать эту форму когда будет находится над этим элементом. Смотрите список предопределённых объектов курсора для диапазона полезных форм.
Для элемента-редактор можно использовать курсор в виде прямой линии:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, будет использован курсор элемента, находящегося ниже.
Смотрите также cursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
Устанавливает пользовательские данные элемента для ключа key равными value.
Пользовательские данные элемента полезны для хранения произвольных свойств для любого элемента. Qt не использует эту особенность для хранения данных; она предоставляется только для удобства пользователя.
Смотрите также data().
Если enabled равна true, то элемент является разблокированным; в противном случае он заблокирован.
Заблокированные элементы являются видимыми, но он не получают никаких событий, не могут получить фокус и не могут быть выделены. События мыши отменяются; они также не передаются если элемент также является невидимым или он не принимает события мыши (смотрите acceptedMouseButtons()). Заблокированный элемент не может получить фокус ввода мыши, поэтому если он у него был, он теряет его если становится заблокированным, также как и фокус.
Заблокированные элементы обычно отрисовываются серыми цветами (смотрите QPalette::Disabled).
Если вы заблокируете родительский элемент, все его потомки также будут заблокированы. Если вы разблокируете родительский элемент, все его потомки будут разблокированы, если они не были заблокированы явно (т.е. если вы вызывали для потомка setEnabled(false), после того как его родитель будет заблокирован и разблокирован снова).
Элементы по умолчанию разблокированы.
Замечание: Если вы установите фильтр событий, вы всё равно сможете перехватывать события прежде чем они будут доставлены элементам; этот механизм работает вне зависимости от состояния блокировки элемента.
Смотрите также isEnabled().
Если enabled равно true, то флаг элемента flag будет установлен; в противном случае он будет снят.
Смотрите также flags() и setFlags().
Устанавливает флаги элемента равными flags. Все флаги в flags будут установлены; все флаги не указанные в flags будут сняты.
Если у элемента был фокус и flags не устанавливает ItemIsFocusable, то в результате вызова этой функции он его потеряет. Также, если элемент был выбран и flags не устанавливают ItemIsSelectable, элемент автоматически потеряет выделение.
По-умолчанию все флаги отключены.
Смотрите также flags() и setFlag().
Даёт этому элементу фокус ввода клавиатуры. Аргумент focusReason будет передан в любое событие фокуса, сгенерированное этой функцией; он будет использоваться для дальнейшего разъяснения что привело к получению этим элементом фокуса.
Только элементы у который установлен флаг ItemIsFocusable могут получать фокус клавиатуры.
Если элемента является невидимым (т.е. isVisible() возвращает false), заблокированным, не связанным со сценой или уже имеет фокус ввода, это функция ничего делать не будет.
В результате вызова этой функции этот элемент получит событие получения фокуса с focusReason. Если у другого элемента был фокус, он получит сообщение потери фокуса, показывающего что он его потерял.
Смотрите также clearFocus() и hasFocus().
Добавляет этот элемент в группу group. Если group равна 0, этот элемент будет удалён из всех текущих групп и будет добавлен как потомок родителю предыдущей группы.
Смотрите также group() и QGraphicsScene::createItemGroup().
Если enabled равно true, устанавливает для обработки всех событий для всех его потомков (т.е. все события направленные любому его потомку вместо этого посылаются ему); в противном случае, если enabled равно false, этот элемент будет обрабатывать только собственные события. Значение по-умолчанию равно false.
Это свойство полезно для групп элементов; оно позволяет одному элементу обрабатывать события от имени всех его потомков вместо того чтобы они обрабатывали свои события сами.
Если потомок принимает события перемещения курсора, его родитель будет получать события перемещения курсора его потомка, но он не получит события входа в область элемента и выхода за неё от имени своих потомков.
Смотрите также handlesChildEvents().
Устанавливает родителя элемента равным parent. Если у элемента уже был родитель, то сначала он удаляется у него. Если parent равен 0, этот элемент становится элементом верхнего уровня.
Смотрите также parentItem() и children().
Устанавливает позицию элемента равной pos, которая задана в координатах родителя. Для элементов без родителя, pos задана в координатах сцены.
Позиция элемента описывает его базис (локальную координату (0, 0)) в координатах родителя.
Смотрите также pos(), scenePos() и Координатная система графического представления.
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалента вызову setPos(QPointF(x, y)).
Если selected равна true, то элемент будет выделен; в противном случае выделение будет снято.
Если элемент входит в состав группы, состояние выделения всей группы будет переключаться этой функции. Если группа выделена, все элементы в группе будут выделены, и если группа не выделена, ни один элемент группы не будет выделен.
Только видимые, разблокированные и выделяемые элементы могут быть выделены. Если selected равно true и этот элемент или невидим, или заблокирован, или его нельзя выделить, эта функция ничего не делает.
По-умолчанию элементы не могут быть выделены. Чтобы разрешить выделение, установите флаг ItemIsSelectable.
Эта функция предоставлена для удобства, позволяя переключать состояние выделения для отдельных элементов. Тем не менее, более общим способом выделения элементов является вызов QGraphicsScene::setSelectionArea(), которая вызовет эту функцию для всех видимых, разблокированных и выделяемых элементов, находящихся внутри указанной области сцены.
Смотрите также isSelected() и QGraphicsScene::selectedItems().
Устанавливает всплывающую подсказку элемента равной toolTip. Если toolTip является постой, всплывающая подсказка элемента очищается.
Смотрите также toolTip() и QToolTip.
Устанавливает текущую матрицу преобразований элемента равной matrix.
Если combine равен true, тогда matrix комбинируется с текущей матрицей; в противном случае matrix замещает текущую матрицу. По-умолчанию combine равно false.
Для упрощения взаимодействий с элементами, использующими преобразованный вид, QGraphicsItem предоставляет функции mapTo... и mapFrom... которые осуществляют перевод между координатами элемента и сцены. Например, вы можете вызвать mapToScene() чтобы перевести координаты элемента в координаты сцены или mapFromScene() чтобы перевести из координат сцены в координаты элемента.
Эта функция была введена в Qt 4.3.
Смотрите также transform(), rotate(), scale(), shear(), translate() и Координатная система графического представления.
Если visible равно true, тогда элемент становится видимым. В противном случае элемент становится невидимым. Невидимые элементы не отрисовываются и не получают никаких событий. В частности, события мыши передаются прямо через невидимые элементы и доставляются элементам, расположенным за ним. Невидимые элементы также нельзя выделить, они не могут получить фокус ввода и не определяются функциями QGraphicsScene.
Если элемент становится невидимым в то время когда у него есть фокус ввода мыши (т.е. пока он получает события перемещения мыши), он автоматически потеряет фокус ввода мыши и он не вернётся когда элемент станет видимым снова; он должен получить сигнал нажатия кнопки мыши чтобы вернуть фокус.
Также невидимый элемент не может получить фокус, так что если у элемента есть фокус и он становится невидимым, он теряет фокус и он не вернётся если элемент просто станет видимым снова.
Если вы спрячете родительский элемент, все его потомки также станут невидимыми. Если вы покажете родительский элемент, все его потомки станут видимыми, если они не были явно спрятаны (т.е. если вы вызвали setVisible(false) для потомка, он не будет показан даже если его родитель был спрятан и показан снова).
Элементы являются по-умолчанию видимыми; нет необходимости вызывать setVisible() для новых элементов.
Смотрите также isVisible(), show() и hide().
Устанавливает значение по оси Z, или высоту, элемента равным z. Высота определяет порядок одноранговых (соседских) элементов. Элементы с более высоким значением по оси Z рисуются выше элементов с более низким значением если у них общий родительский элемент. Также потомки элемента всегда рисуются выше родительского элемента вне зависимости от значения потомка по оси Z. Одноранговые элементы с одинаковым значением по оси Z отрисовываются в произвольном порядке, хотя этот порядок будет сохраняться на всём протяжении из жизни.
Потомки различных элементов располагаются в зависимости от значения по оси Z их предков, являющихся ближайшими потомками первого общего предка этих двух элементов. Например, элемент робот может определить элемент торс в качестве родителя элемента головы, двух рук и двух верхних элементов ног. Каждый верхний элемент ног является родителем нижнего элемента ног, а каждый нижний элемент ног является родителем одного элемента ступни. Порядок расположения ступней такой же как порядок расположения предков каждой ступни которые являются ближайшими потомками общего предка двух ступней (т.е. элемент торса); таким образом ступни расположены в том же порядке что и верхние элементы ног вне зависимости от значения по оси Z каждой ступни.
Значение по оси Z никак не влияет на размер элементов.
По-умолчанию значение по оси Z равно 0.
Смотрите также zValue().
Возвращает фигуру этого элемента в виде QPainterPath в локальных координатах. Фигура используется для многих вещей включая определение столкновений, проверку попаданий и для функции QGraphicsScene::items().
Реализация по-умолчанию вызывает boundingRect() чтобы вернуть простую фигуру, но подклассы могут переопределить эту функцию чтобы возвращать более точную фигуру для непрямоугольных элементов. Например, круглый элемент может возвращать эллипсис для более точного определения столкновений. Например:
QPainterPath RoundItem::shape() const { QPainterPath path; path.addEllipse(boundingRect()); return path; }
Контур фигуры может изменяться в зависимости от ширины и стиля пера, используемого для отрисовки. Если вы хотите включить этот контур в фигуру элемента, вы можете создать элемент из штрихов используя QPainterPathStroker.
Эта функция вызывается реализациями по-умолчанию функций contains() и collidesWithPath().
Смотрите также boundingRect(), contains(), prepareGeometryChange() и QPainterPathStroker.
Обрезает трансформацию текущего элемента на (sh, sv).
Смотрите также setTransform(), transform(), rotate(), scale() и translate().
Отображает элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(true).
Смотрите также hide() и setVisible().
Возвращает всплывающую подсказку элемента или пустую строку QString если она не была установлена.
Смотрите также setToolTip() и QToolTip.
Возвращает элемент верхнего уровня этого элемента. Элемент верхнего уровня это предок этого элемента для которого родитель равен 0. Если у элемента нет родителя, тогда возвращается указатель на него (т.е. он сам является элементом верхнего уровня).
Смотрите также parentItem().
Возвращает указатель на виджет верхнего уровня для элемента (т.е. предка элемента, чей родитель равен 0, или элемент чей родитель не виджет), или 0 если у этого элемента нет виджета верхнего уровня. Если элемент сам является виджетом верхнего уровня, то эта функция возвращает указатель на него.
Эта функция была введена в Qt 4.4.
Возвращает матрицу преобразований этого элемента. Если матрица не была установлена, возвращается единичная матрица.
Эта функция была введена в Qt 4.3.
Смотрите также setTransform() и sceneTransform().
Перемещает текущее преобразование элемента на (dx, dy).
Если вы хотите переместить элемент, вам необходимо вызвать вместо этого moveBy() или setPos(); эта функция изменяет трансформацию элемента, которая не связана с его позицией.
Смотрите также setTransform(), transform(), rotate(), scale() и shear().
Возвращает тип элемента в виде целого числа. Все стандартные классы графических элементов связаны с уникальными значениями; смотрите QGraphicsItem::Type. Эта информация о типе используется qgraphicsitem_cast() для преобразования между типами.
Реализация (in QGraphicsItem) по-умолчанию возвращает UserType.
Чтобы обеспечить использования qgraphicsitem_cast() с собственным элементом переопределите эту функцию и объявите значение перечисления Type равным типу вашего элемента. Пользовательские элементы должны возвращать значение большее или равное UserType (65536).
Например:
class CustomItem : public QGraphicsItem
{
...
enum { Type = UserType + 1 };
int type() const
{
// Разрешает использовать qgraphicsitem_cast с этим элементом.
return Type;
}
...
};
Смотрите также UserType.
Освобождает фокус ввода клавиатуры.
Эта функция была введена в Qt 4.4.
Смотрите также grabKeyboard() и ungrabMouse().
Освобождает фокус ввода мыши.
Эта функция была введена в Qt 4.4.
Смотрите также grabMouse() и ungrabKeyboard().
Очищает курсор для этого элемента.
Смотрите также hasCursor() и setCursor().
Планирует перерисовку области этого элемента покрываемой прямоугольником rect. Вы можете вызывать эту функцию когда необходимо перерисовать элемент, например, когда у него изменяется вид или размер.
Эта функция не приводит к незамедлительной отрисовке; вместо этого она планирует запрос отрисовки, который будет обработан QGraphicsView после того как управление вернётся в цикл событий. Элемент будет перерисован только в том случае, если он виден в любом связанном виде.
Побочным эффектом перерисовки элемента будет то, что элементы, которые перекрывают область rect, могут быть также перерисованы.
Если элемент невидим (т.е. isVisible() возвращает false), эта функция ничего не делает.
Смотрите также paint() и boundingRect().
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалентна вызову update(QRectF(x, y, width, height)).
Этот обработчик события event может быть переопределён чтобы получать события колёсика мыши для этого элемента. Если вы переопределите эту функцию, event будет приниматься по-умолчанию.
Если вы игнорируете событие (т.е. вызовите QEvent::ignore()) он будет передан элементу ниже этого. Если ни один элемент не принял это событие, оно игнорируется сценой и передаётся виду (т.е. вертикальной полосе прокрутке вида).
Реализация по умолчанию игнорирует это событие.
Смотрите также sceneEvent().
Возвращает окно элемента или 0, если у этого элемента нет окна. Если этот элемент является окном, он возвращает себя. В противном случае он возвращает ближайшего предка, являющегося окном.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsWidget::isWindow().
Эта вспомогательная функция эквивалентна вызову pos().x().
Смотрите также y().
Эта вспомогательная функция эквивалентна вызову pos().y().
Смотрите также x().
Возвращает значение по оси Z, или высоту, элемента. Положение по оси Z определяет порядок размещения одноранговых (соседских) элементов.
По-умолчанию значение по оси Z равно 0.
Смотрите также setZValue().
Минимальное разрешённое значение типа для собственного элемента (подкласс QGraphicsItem или любого стандартного элемента). Это значение используется вместе с переопределением QGraphicsItem::type() и декларированием значения перечисления Type. Пример:
class CustomItem : public QGraphicsItem
{
...
enum { Type = UserType + 1 };
int type() const
{
// Разрешает использовать qgraphicsitem_cast с этим элементом.
return Type;
}
...
};
Возвращает заданный item преобразованный к типу T если item является типом T; в противном случае возвращается 0.
Замечание: Чтобы заставить эту функцию работать корректно с собственными элементами, переопределите функцию {QGraphicsItem::}{type()} для каждого собственного подкласса QGraphicsItem.
Эта функция была введена в Qt 4.2.
Смотрите также QGraphicsItem::type() и QGraphicsItem::UserType.
Copyright © 2008 Nokia | Торговые марки | Qt 4.4.3 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |