Описание класса QGraphicsItem
|
Константа | Значение | Описание |
---|---|---|
QGraphicsItem::ItemEnabledChange | 3 | Изменяется состояние блокировки элемента. Если элемент является разблокированным, он станет заблокированным, и наоборот. Значением аргумента является новое состояние блокировки (т.е., true или false). Не вызывайте setEnabled() в itemChange() если это извещение доставлено. Вместо этого вы можете вернуть новое состояние из 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::ItemVisibleChange | 2 | Изменяется состояние видимости элемента. Если элемент является видимым, он станет невидимым, и наоборот. Значением аргумента является новое состояние видимости (т.е. true или false). Не вызывайте setVisible() в itemChange() если доставлено это уведомление; вместо этого вы можете вернуть новое состояние видимости из itemChange(). |
QGraphicsItem::ItemParentChange | 5 | Изменяется родитель элемента. Значением аргумента является новый элемент-родитель (т.е. указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange() если доставлено это уведомление; вместо этого вы можете вернуть нового родителя из itemChange(). |
QGraphicsItem::ItemChildAddedChange | 6 | У элемента добавился потомок. Значением аргумента является новый дочерний элемент (т.е. указатель на QGraphicsItem). Не передавайте этот элемент в функцию setParentItem() любого элемента если доставлено это извещение. Возвращаемое значение не используется; вы ничего не можете настроить в данном уведомлении. Заметьте, что новый потомок может быть не до конца создан в момент прихода данного сообщения; вызов чисто виртуальных функций данного потомка может привести к краху программы. |
QGraphicsItem::ItemChildRemovedChange | 7 | У элемента удалён дочерний элемент. Значением аргумента является потомок который будет удалён (т.е. указатель на QGraphicsItem). Возвращаемое значение не используется; вы ничего не можете настроить в данном уведомлении. |
QGraphicsItem::ItemSceneChange | 11 | Элемент перемещается на новую сцену. Это уведомление также высылается когда элемент впервые добавляется на сцену и когда он удаляется со сцены. Значением аргумента является новая сцена (т.е. указатель на QGraphicsScene) или нулевой указатель если элемент удалён со сцены. Не перегружайте это изменение передавая элемент в функцию QGraphicsScene::addItem() если доставлено это уведомление; вместо этого вы можете вернуть новую сцену из itemChange(). |
Это перечисление описывает различные флаги, которые вы можете установить для элемента чтобы изменить различные особенности поведения элемента.
Все флаги по-умолчанию отключены.
Константа | Значение | Описание |
---|---|---|
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 | Элемент игнорирует наследуемые преобразования (т.е. его позиция всё ещё связана с его родителем, но поворот, масштабирование или обрезание родителя или вида игнорируются). Этот флаг очень полезен для элементов текста метки, который становится нечитабельным когда вид увеличится за пределы сцены. По-умолчанию этот флаг отключён. Этот флаг был введён в Qt 4.3. |
Тип GraphicsItemFlags является определением типа для QFlags<GraphicsItemFlag>. Он хранит комбинацию значений (по ИЛИ) для GraphicsItemFlag.
Создаёт QGraphicsItem с заданным родителем parent.
Если parent равен 0, вы можете добавить элемент на сцену вызвав QGraphicsScene::addItem(). Элемент станет элементом верхнего уровня.
Смотрите также QGraphicsScene::addItem() и setParentItem().
Уничтожает QGraphicsItem и всех его потомков. Если этот элемент связан со сценой, то он будет убран с неё перед удалением.
Возвращает true если этот элемент может принимать события перетаскивания; в противном случает возвращает false. По-умолчанию элементы не принимают события перетаскивания; элементы являются для него "прозрачными".
Смотрите также setAcceptDrops().
Возвращает кнопки мыши от которых данный элемент принимает события. По-умолчанию принимаются все кнопки мыши.
Если элемент принимает кнопку мыши, то он получает все события нажатия для данной кнопки. Если элемент не принимает кнопку, то QGraphicsScene передаст событие мыши первому элементу под ним, который его примет.
Смотрите также setAcceptedMouseButtons() и mousePressEvent().
Возвращает true если элемент возвращает события перемещения над ним курсора мыши (QGraphicsSceneHoverEvent); в противном случае возвращает false. По-умолчанию элементы не принимают данные события.
Смотрите также setAcceptsHoverEvents() и setAcceptedMouseButtons().
Эта виртуальная функция вызывается дважды для всех элементов из слота 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); }
Смотрите также shape(), contains(), Система координат графического представления и prepareGeometryChange().
Возвращает список потомков элемента. Элементы возвращаются в произвольном порядке.
Смотрите также setParentItem().
Возвращает ограничивающий прямоугольник всех потомков элемента (т.е. его потомков, потомков его потомков и т.д.) в локальных координатах. Если у элемента нет потомков, эта функция вернёт пустой QRectF.
Эта функция не учитывает ограничивающий прямоугольник самого элемента; она возвращает суммарный ограничивающий прямоугольник только его потомков. Если вам надо включить ограничивающий прямоугольник элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью оператора QRectF::operator|().
Сложность этой функции увеличивается линейно; она определяет размер ограничивающего прямоугольника перебирая всех потомков.
Смотрите также boundingRect() и sceneBoundingRect().
Убирает фокус ввода клавиатуры от элемента.
Если у него был фокус, высылается событие потери фокуса для сообщения элементу того, что он потеряет фокус.
Только элементы у который установлен флаг ItemIsFocusable могут получать фокус клавиатуры.
Смотрите также setFocus().
Возвращает 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().
Возвращает 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 может быть переопределён чтобы получать события получения фокуса для этого элемента. Реализация по-умолчанию ничего не делает.
Смотрите также focusOutEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события потери фокуса для этого элемента. Реализация по-умолчанию ничего не делает.
Смотрите также focusInEvent() и sceneEvent().
Возвращает указатель на группу данного элемента или 0, если этот элемент не является членом группы.
Смотрите также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
Возвращает true если этот элемент обрабатывает события потомков, ( т.е. все предназначенные его потомкам события пересылаются ему вместо них); в противном случае возвращает false.
Это свойство полезно для групп элементов; оно позволяет одному элементу обрабатывать события от имени всех его потомков вместо того чтобы они обрабатывали свои события сами.
По-умолчанию возвращается false; потомки сами обрабатывают свои события. Исключением является элемент QGraphicsItemGroup, у него эта функция возвращает true.
Смотрите также setHandlesChildEvents().
Возвращает true если у данного элемента установлен курсор; в противном случае возвращает false.
По-умолчанию у элемента нет установленного курсора. cursor() вернёт стандартный курсор в виде стрелки.
Смотрите также unsetCursor().
Возвращает true если этот элемент может принимать фокус (т.е. может принимать события клавиш); в противном случает возвращает false.
Смотрите также setFocus() и QGraphicsScene::setFocusItem().
Прячет элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(false).
Смотрите также show() и setVisible().
Этот обработчик события event может быть переопределён чтобы получать события входа курсора мыши в область элемента над этим элементом. Реализация по-умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptsHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события выхода курсора за границы элемента. Реализация по-умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptsHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события перемещения курсора мыши над элементом. Реализация по-умолчанию ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptsHoverEvents().
Этот обработчик события 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.
Заметьте, что общая видимость элемента не связана с тем, отображается ли он QGraphicsView или нет.
Смотрите также setVisible().
Эта виртуальная функция вызывается 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.
void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->drawRoundRect(-10, -10, 20, 20); }
Толщина пера по-умолчанию равна 0 и это перо инициализируется кистью QPalette::Text из палитры устройства рисования. Кисть инициализируется QPalette::Window.
Все рисования происходят в локальных координатах.
Возвращает указатель на родительский элемент. Если у этого элемента нет родителя, возвращается 0.
Смотрите также setParentItem() и children().
Возвращает положение элемента в родительских координатах. Если у элемента нет родителя, положение задаётся в координатах сцены.
Позиция элемента описывает ее базис (локальные координаты (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() и Координатная система графического представления.
Если on равно true, этот элемент будет принимать события перетаскивания и бросания; в противном случае он будет прозрачен для них. По-умолчанию элемент не принимает данные события.
Смотрите также acceptDrops().
Устанавливает кнопки buttons мыши для которых элемент будет принимать события.
По-умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он получит фокус ввода мыши когда ему будет доставлено событие нажатия этой кнопки. Если элемент не принимает нажатие кнопки мыши, QGraphicsScene передаст это событие ближайшему элементу под ним, которые его примет.
Чтобы заблокировать события мыши для элемента (т.е. сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
Смотрите также acceptedMouseButtons() и mousePressEvent().
Если enabled равно true, этот элемент будет принимать события перемещения над ним курсора мыши; в противном случае он будет игнорировать их. По-умолчанию элементы не принимают данные события.
События перемещения мыши доставляются в том случае, когда нет других элементов, обладающих фокусом ввода мыши. Они посылаются когда курсор мыши входит в область элемента, когда он перемещается внутри его области и когда он её покидает. События перемещения мыши обычно используются для подсветки элемента когда на него наводится курсор и для отслеживания курсора мыши когда он находится над элементом (эквивалентноQWidget::mouseTracking).
Элементы-родители получают события входа курсора мыши в область элемента прежде потомков и событие выхода курсора за область элемента после них. Элемент не получает событие выхода за область элемента если курсор переходит в область другого потомка; он не получит его пока курсор не выйдет за область, включающую области всех его потомков.
Если родитель обрабатывает события потомков (setHandlesChildEvents()), он будет получать события перемещения мыши, перемещения и бросания когда переходит от одного дочернего элемента к другому, но он не получить ни события входа в область элемента и выхода за неё, ни события начала и окончания перетаскивания от имени его потомков.
Смотрите также acceptsHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
Устанавливает текущую форму курсора элемента равной 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; }
Эта функция вызывается реализациями по-умолчанию функций contains() и collidesWithPath().
Смотрите также boundingRect(), contains() и prepareGeometryChange().
Обрезает трансформацию текущего элемента на (sh, sv).
Смотрите также setTransform(), transform(), rotate(), scale() и translate().
Отображает элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(true).
Смотрите также hide() и setVisible().
Возвращает всплывающую подсказку элемента или пустую строку QString если она не была установлена.
Смотрите также setToolTip() и QToolTip.
Возвращает элемент верхнего уровня этого элемента. Элемент верхнего уровня это предок этого элемента для которого родитель равен 0. Если у элемента нет родителя, тогда возвращается указатель на него (т.е. он сам является элементом верхнего уровня).
Смотрите также parentItem().
Возвращает матрицу преобразований этого элемента. Если матрица не была установлена, возвращается единичная матрица.
Эта функция была введена в Qt 4.3.
Смотрите также setTransform() и sceneTransform().
Перемещает текущее преобразование элемента на (dx, dy).
Если вы хотите переместить элемент, вам необходимо вызвать вместо этого moveBy() или setPos(); эта функция изменяет трансформацию элемента, которая не связана с его позицией.
Смотрите также setTransform(), transform(), rotate(), scale() и shear().
Возвращает тип элемента в виде целого числа. Все стандартные классы графических элементов связаны с уникальными значениями; смотрите QGraphicsItem::Type. Эта информация о типе используется qgraphicsitem_cast() для преобразования между типами.
Повторная реализация этой функции и объявление значения перечисления Type, эквивалентного для вашего типа пользовательского элемента, разрешает использование qgraphicsitem_cast() с элементом. Пользовательские элементы должны возвращать значение большее или равное UserType (65536).
Реализация (in QGraphicsItem) по-умолчанию возвращает UserType.
Очищает курсор для этого элемента.
Смотрите также hasCursor() и setCursor().
Планирует перерисовку области этого элемента покрываемой прямоугольником rect. Вы можете вызывать эту функцию когда необходимо перерисовать элемент, например, когда у него изменяется вид или размер.
Эта функция не приводит к незамедлительной отрисовке; вместо этого она планирует запрос отрисовки, который будет обработан QGraphicsView после того как управление вернётся в цикл событий. Элемент будет перерисован только в том случае, если он виден в любом связанном виде.
Побочным эффектом перерисовки элемента будет то, что элементы, которые перекрывают область rect, могут быть также перерисованы.
Если элемент невидим (т.е. isVisible() возвращает false), эта функция ничего не делает.
Смотрите также paint() и boundingRect().
Это перегруженная функция, предоставленная для удобства.
Эта вспомогательная функция эквивалентна вызову update(QRectF(x, y, width, height)).
Этот обработчик события event может быть переопределён чтобы получать события колёсика мыши для этого элемента. Если вы переопределите эту функцию, event будет приниматься по-умолчанию.
Если вы игнорируете событие (т.е. вызовите QEvent::ignore()) он будет передан элементу ниже этого. Если ни один элемент не принял это событие, оно игнорируется сценой и передаётся виду (т.е. вертикальной полосе прокрутке вида).
Реализация по умолчанию игнорирует это событие.
Смотрите также sceneEvent().
Эта вспомогательная функция эквивалентна вызову 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.
Эта функция была введена в Qt 4.2.
Copyright © 2008 Trolltech | Торговые марки | Qt 4.3.5 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |