Spec-Zone.ru › Qt 5.13

Класс QGraphicsItem

Класс QGraphicsItem — это базовый класс для всех графических элементов в QGraphicsScene. Подробнее...

Заголовок: #include <QGraphicsItem>
qmake: QT += widgets
С тех пор: Qt 4.2
Наследуется от:

QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem

Этот класс был представлен в Qt 4.2.

  • Список всех членов, включая наследуемые
  • Устаревшие члены

Типы public

Перечисление CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache }
Перечисление GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemMatrixChange, ItemPositionChange, ..., ItemScenePositionHasChanged }
Перечисление GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ..., ItemContainsChildrenInShape }
Флаги GraphicsItemFlags
Перечисление PanelModality { NonModal, PanelModal, SceneModal }
Перечисление anonymous { Type, UserType }

Public Функции

QGraphicsItem(QGraphicsItem *parent = nullptr)
virtual ~QGraphicsItem()
bool acceptDrops() const
bool acceptHoverEvents() const
bool acceptTouchEvents() const
Qt::MouseButtons acceptedMouseButtons() const
virtual void advance(int phase)
virtual QRectF boundingRect() const = 0
QRegion boundingRegion(const QTransform &itemToDeviceTransform) const
qreal boundingRegionGranularity() const
QGraphicsItem::CacheMode cacheMode() const
QList<QGraphicsItem *> childItems() const
QRectF childrenBoundingRect() const
void clearFocus()
QPainterPath clipPath() const
virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItem * commonAncestorItem(const QGraphicsItem *other) const
virtual bool contains(const QPointF &point) const
QCursor cursor() const
QVariant data(int key) const
QTransform deviceTransform(const QTransform &viewportTransform) const
qreal effectiveOpacity() const
void ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = ..., int ymargin = ...)
bool filtersChildEvents() const
QGraphicsItem::GraphicsItemFlags flags() const
QGraphicsItem * focusItem() const
QGraphicsItem * focusProxy() const
void grabKeyboard()
void grabMouse()
QGraphicsEffect * graphicsEffect() const
QGraphicsItemGroup * group() const
bool hasCursor() const
bool hasFocus() const
void hide()
Qt::InputMethodHints inputMethodHints() const
void installSceneEventFilter(QGraphicsItem *filterItem)
bool isActive() const
bool isAncestorOf(const QGraphicsItem *child) const
bool isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
bool isClipped() const
bool isEnabled() const
bool isObscured(const QRectF &rect = QRectF()) const
bool isObscured(qreal x, qreal y, qreal w, qreal h) const
virtual bool isObscuredBy(const QGraphicsItem *item) const
bool isPanel() const
bool isSelected() const
bool isUnderMouse() const
bool isVisible() const
bool isVisibleTo(const QGraphicsItem *parent) const
bool isWidget() const
bool isWindow() const
QTransform itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
QPolygonF mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromParent(const QPointF &point) const
QPolygonF mapFromParent(const QRectF &rect) const
QPolygonF mapFromParent(const QPolygonF &polygon) const
QPainterPath mapFromParent(const QPainterPath &path) const
QPointF mapFromParent(qreal x, qreal y) const
QPolygonF mapFromParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromScene(const QPointF &point) const
QPolygonF mapFromScene(const QRectF &rect) const
QPolygonF mapFromScene(const QPolygonF &polygon) const
QPainterPath mapFromScene(const QPainterPath &path) const
QPointF mapFromScene(qreal x, qreal y) const
QPolygonF mapFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromParent(const QRectF &rect) const
QRectF mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromScene(const QRectF &rect) const
QRectF mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToParent(const QRectF &rect) const
QRectF mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToScene(const QRectF &rect) const
QRectF mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
QPolygonF mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapToParent(const QPointF &point) const
QPolygonF mapToParent(const QRectF &rect) const
QPolygonF mapToParent(const QPolygonF &polygon) const
QPainterPath mapToParent(const QPainterPath &path) const
QPointF mapToParent(qreal x, qreal y) const
QPolygonF mapToParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToScene(const QPointF &point) const
QPolygonF mapToScene(const QRectF &rect) const
QPolygonF mapToScene(const QPolygonF &polygon) const
QPainterPath mapToScene(const QPainterPath &path) const
QPointF mapToScene(qreal x, qreal y) const
QPolygonF mapToScene(qreal x, qreal y, qreal w, qreal h) const
void moveBy(qreal dx, qreal dy)
qreal opacity() const
virtual QPainterPath opaqueArea() const
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...) = 0
QGraphicsItem * panel() const
QGraphicsItem::PanelModality panelModality() const
QGraphicsItem * parentItem() const
QGraphicsObject * parentObject() const
QGraphicsWidget * parentWidget() const
QPointF pos() const
void removeSceneEventFilter(QGraphicsItem *filterItem)
void resetTransform()
qreal rotation() const
qreal scale() const
QGraphicsScene * scene() const
QRectF sceneBoundingRect() const
QPointF scenePos() const
QTransform sceneTransform() const
void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
void setAcceptDrops(bool on)
void setAcceptHoverEvents(bool enabled)
void setAcceptTouchEvents(bool enabled)
void setAcceptedMouseButtons(Qt::MouseButtons buttons)
void setActive(bool active)
void setBoundingRegionGranularity(qreal granularity)
void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
void setCursor(const QCursor &cursor)
void setData(int key, const QVariant &value)
void setEnabled(bool enabled)
void setFiltersChildEvents(bool enabled)
void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
void setFlags(QGraphicsItem::GraphicsItemFlags flags)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusProxy(QGraphicsItem *item)
void setGraphicsEffect(QGraphicsEffect *effect)
void setGroup(QGraphicsItemGroup *group)
void setInputMethodHints(Qt::InputMethodHints hints)
void setOpacity(qreal opacity)
void setPanelModality(QGraphicsItem::PanelModality panelModality)
void setParentItem(QGraphicsItem *newParent)
void setPos(const QPointF &pos)
void setPos(qreal x, qreal y)
void setRotation(qreal angle)
void setScale(qreal factor)
void setSelected(bool selected)
void setToolTip(const QString &toolTip)
void setTransform(const QTransform &matrix, bool combine = false)
void setTransformOriginPoint(const QPointF &origin)
void setTransformOriginPoint(qreal x, qreal y)
void setTransformations(const QList<QGraphicsTransform *> &transformations)
void setVisible(bool visible)
void setX(qreal x)
void setY(qreal y)
void setZValue(qreal z)
virtual QPainterPath shape() const
void show()
void stackBefore(const QGraphicsItem *sibling)
QGraphicsObject * toGraphicsObject()
const QGraphicsObject * toGraphicsObject() const
QString toolTip() const
QGraphicsItem * topLevelItem() const
QGraphicsWidget * topLevelWidget() const
QTransform transform() const
QPointF transformOriginPoint() const
QList<QGraphicsTransform *> transformations() const
virtual int type() const
void ungrabKeyboard()
END_OF_DOCUMENT_MARKER
void ungrabMouse()
void unsetCursor()
void update(const QRectF &rect = QRectF())
void update(qreal x, qreal y, qreal width, qreal height)
QGraphicsWidget * window() const
qreal x() const
qreal y() const
qreal zValue() const

Защищенные функции

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *event)
virtual void focusOutEvent(QFocusEvent *event)
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
virtual void keyPressEvent(QKeyEvent *event)
virtual void keyReleaseEvent(QKeyEvent *event)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void prepareGeometryChange()
virtual bool sceneEvent(QEvent *event)
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event)
void updateMicroFocus()
virtual void wheelEvent(QGraphicsSceneWheelEvent *event)

Связанные нечлены

T qgraphicsitem_cast(QGraphicsItem *item)

Подробное описание

Он предоставляет лёгкую основу для написания собственных пользовательских элементов. Это включает определение геометрии элемента, обнаружения коллизий, его реализации рисования и взаимодействия с элементом через обработчики событий. QGraphicsItem является частью фреймворка Визуализации графики

Для удобства Qt предоставляет набор стандартных графических элементов для наиболее распространённых форм. Это:

  • QGraphicsEllipseItem предоставляет эллиптический элемент
  • QGraphicsLineItem предоставляет линейный элемент
  • QGraphicsPathItem предоставляет произвольный путь
  • QGraphicsPixmapItem предоставляет элемент пиксельной карты
  • QGraphicsPolygonItem предоставляет элемент многоугольника
  • QGraphicsRectItem предоставляет прямоугольный элемент
  • QGraphicsSimpleTextItem предоставляет простой текстовый ярлык
  • QGraphicsTextItem предоставляет расширенный текстовый элемент отображения

Вся геометрическая информация элемента основана на его локальной системе координат. Позиция элемента, pos(), — единственная функция, которая не работает в локальных координатах, поскольку она возвращает позицию в координатах родительского элемента. Система координат фреймворка Визуализации графики подробно описывает систему координат.

Вы можете указать, должен ли элемент быть видимым (т.е. рисоваться и принимать события), вызвав setVisible(). Скрытие элемента также скроет его дочерние элементы. Аналогично, вы можете включить или отключить элемент, вызвав setEnabled(). Если вы отключите элемент, все его дочерние элементы также будут отключены. По умолчанию элементы являются видимыми и включёнными. Чтобы переключать, выбран ли элемент, сначала включите выбор, установив флаг ItemIsSelectable, а затем вызовите setSelected(). Обычно выбор переключается сценой в результате взаимодействия пользователя.

Чтобы написать собственный графический элемент, сначала создайте подкласс QGraphicsItem, а затем начните с реализации двух чистых виртуальных публичных функций: boundingRect(), которая возвращает оценку области, нарисованной элементом, и paint(), которая реализует фактическое рисование. Например:

class SimpleItem : public QGraphicsItem
{
public:
    QRectF boundingRect() const override
    {
        qreal penWidth = 1;
        return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
                      20 + penWidth, 20 + penWidth);
    }

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
               QWidget *widget) override
    {
        painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
    }
};

Функция boundingRect() имеет много различных целей. QGraphicsScene базирует свой индекс элемента на boundingRect(), а QGraphicsView использует его как для отсечения невидимых элементов, так и для определения области, которая должна быть перерисована при рисовании перекрывающихся элементов. Кроме того, механизмы обнаружения столкновений QGraphicsItem используют boundingRect() для обеспечения эффективного отсечения. Точно настроенный алгоритм обнаружения столкновений в collidesWithItem() основан на вызове shape(), который возвращает точный контур формы элемента в виде QPainterPath.

QGraphicsScene ожидает, что все элементы boundingRect() и shape() останутся неизменными, если не уведомлено об обратном. Если вы хотите изменить геометрию элемента каким-либо образом, вы должны сначала вызвать prepareGeometryChange(), чтобы позволить QGraphicsScene обновить свою учётную запись.

Обнаружение столкновений можно выполнить двумя способами:

  1. Переопределите shape(), чтобы вернуть точную форму вашего элемента, и полагайтесь на реализацию по умолчанию collidesWithItem() для выполнения пересечения формы с формой. Это может быть довольно дорогостоящим, если формы сложные.
  2. Переопределите collidesWithItem(), чтобы предоставить свой собственный алгоритм обнаружения столкновений элементов и форм.
END_OF_DOCUMENT_MARKER

Функция contains() может быть вызвана для определения, содержит ли элемент заданную точку. Эту функцию также можно переопределить в элементе. По умолчанию, поведение contains() основано на вызове shape().

Элементы могут содержать другие элементы и быть содержащимися другими элементами. Все элементы могут иметь родительский элемент и список дочерних элементов. Если у элемента нет родителя, его положение задается в координатах родителя (т.е., в локальных координатах родителя). Родительские элементы передают своё положение и преобразование всем своим дочерним элементам.

Преобразования

QGraphicsItem поддерживает проективные преобразования помимо своего базового положения, pos(). Существует несколько способов изменения преобразования элемента. Для простых преобразований можно вызвать удобные функции setRotation() или setScale(), или передать любую матрицу преобразования в setTransform(). Для расширенного управления преобразованиями можно задать несколько комбинированных преобразований, вызвав setTransformations().

Преобразования элементов накапливаются от родителя к дочернему элементу, поэтому, если и родительский, и дочерний элементы повернуты на 90 градусов, общее преобразование дочернего элемента будет составлять 180 градусов. Аналогично, если родительский элемент масштабирован в 2 раза по сравнению с исходным размером, дочерние элементы также будут в два раза больше. Преобразование элемента не влияет на его собственную локальную геометрию; все геометрические функции (например, contains(), update() и все функции отображения) по-прежнему работают в локальных координатах. Для удобства QGraphicsItem предоставляет функции sceneTransform(), возвращающую общую матрицу преобразования элемента (включая его положение и положения и преобразования всех родителей), и scenePos(), возвращающую его положение в координатах сцены. Чтобы сбросить матрицу преобразования элемента, вызовите resetTransform().

Определённые операции преобразования приводят к различному результату в зависимости от порядка их применения. Например, если вы сначала масштабируете, а затем поворачиваете преобразование, вы можете получить другой результат, чем если бы преобразование сначала поворачивалось. Однако порядок, в котором вы устанавливаете свойства преобразования на QGraphicsItem, не влияет на результирующее преобразование; QGraphicsItem всегда применяет свойства в фиксированном, определённом порядке:

  • Применяется базовое преобразование элемента (transform())
  • Применяется список преобразований элемента в порядке их перечисления (transformations())
  • Элемент поворачивается относительно точки начала преобразования (rotation(), transformOriginPoint())
  • Элемент масштабируется относительно точки начала преобразования (scale(), transformOriginPoint())

Рисование

Функция paint() вызывается QGraphicsView для рисования содержимого элемента. У элемента нет собственного фона или заполнения по умолчанию; всё, что находится за элементом, будет просвечивать через все области, которые не были явно нарисованы в этой функции. Вы можете вызвать update() для планирования перерисовки, необязательно передавая прямоугольник, требующий перерисовки. В зависимости от того, виден ли элемент в представлении, он может быть перерисован или нет; эквивалента QWidget::repaint() в QGraphicsItem нет.

Элементы рисуются представлением, начиная с родительских элементов, а затем рисуются дочерние элементы в порядке возрастания порядка отображения. Вы можете задать порядок отображения элемента, вызвав setZValue(), и проверить его, вызвав zValue(), где элементы с низкими значениями z рисуются перед элементами с высокими значениями z. Порядок отображения относится к элементам-сверстникам; родители всегда рисуются перед своими детьми.

Сортировка

Все элементы рисуются в определённом стабильном порядке, и этот же порядок определяет, какие элементы получат ввод мыши в первую очередь при нажатии на сцену. Обычно вам не нужно беспокоиться о сортировке, так как элементы следуют «естественному порядку», следуя логической структуре сцены.

Дочерние элементы элемента располагаются поверх родительского элемента, а элементы-сверстники располагаются в порядке вставки (т.е., в том же порядке, в котором они были добавлены в сцену или в того же родителя). Если вы добавите элемент A, а затем B, то B будет расположен поверх A. Если вы затем добавите C, порядок отображения элементов будет A, затем B, затем C.

Этот пример демонстрирует порядок отображения всех конечностей робота из примера Drag and Drop Robot. Туловище является корневым элементом (все остальные элементы являются дочерними или потомками туловища), поэтому оно рисуется в первую очередь. Затем рисуется голова, так как это первый элемент в списке дочерних элементов туловища. Затем рисуется левая верхняя рука. Так как нижняя рука является дочерним элементом верхней руки, затем рисуется нижняя рука, за ней следующая сестра верхней руки — правая верхняя рука, и так далее.

Для продвинутых пользователей существуют способы изменения способа сортировки элементов:

  • Вы можете вызвать setZValue() для элемента, чтобы явно расположить его поверх или под другими элементами-сверстниками. Значение Z по умолчанию для элемента равно 0. Элементы с одинаковым значением Z располагаются в порядке вставки.
  • Вы можете вызвать stackBefore() для изменения порядка списка дочерних элементов. Это напрямую изменит порядок вставки.
  • Вы можете установить флаг ItemStacksBehindParent, чтобы расположить дочерний элемент позади его родительского элемента.

Порядок отображения двух элементов-сверстников также учитывается для каждого элемента и его потомков. Таким образом, если один элемент находится поверх другого, то все его дочерние элементы также будут находиться поверх всех дочерних элементов другого элемента.

События

QGraphicsItem получает события от QGraphicsScene через виртуальную функцию sceneEvent(). Эта функция распределяет наиболее распространённые события по набору удобных обработчиков событий:

  • contextMenuEvent() обрабатывает события контекстного меню
  • focusInEvent() и focusOutEvent() обрабатывают события фокуса вхождения и выхода
  • hoverEnterEvent(), hoverMoveEvent(), и hoverLeaveEvent() обрабатывают события вхождения, перемещения и выхода курсора
  • inputMethodEvent() обрабатывает события ввода для обеспечения доступности
  • keyPressEvent() и keyReleaseEvent() обрабатывают события нажатия и отпускания клавиш
  • mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), и mouseDoubleClickEvent() обрабатывают события нажатия, перемещения, отпускания, клика и двойного клика мыши

Вы можете фильтровать события для любого другого элемента, установив фильтры событий. Эта функциональность отделена от стандартных фильтров событий Qt (см. QObject::installEventFilter()), которые работают только с подклассами QObject. После установки элемента в качестве фильтра событий для другого элемента, вызвав installSceneEventFilter(), отфильтрованные события будут получены виртуальной функцией sceneEventFilter(). Вы можете удалить фильтры событий элемента, вызвав removeSceneEventFilter().

Пользовательские данные

Иногда бывает полезно регистрировать пользовательские данные с элементом, будь то пользовательский элемент или стандартный элемент. Вы можете вызвать setData() для любого элемента, чтобы сохранить данные в нём с помощью пары ключ-значение (ключ — целое число, а значение — QVariant). Чтобы получить пользовательские данные из элемента, вызовите data(). Эта функциональность полностью не затрагивается Qt; она предоставляется для удобства пользователя.

См. также QGraphicsScene, QGraphicsView и Графический фреймворк представления.

Документация по типам членов

перечисление QGraphicsItem::CacheMode

Это перечисление описывает режимы кэширования QGraphicsItem. Кэширование используется для ускорения отрисовки путём выделения и отрисовки в буфер пикселей вне экрана, который может быть повторно использован, когда элемент требует перерисовки. Для некоторых устройств отображения кэш хранится непосредственно в графической памяти, что делает отрисовку очень быстрой.

Константа Значение Описание
QGraphicsItem::NoCache 0 Значение по умолчанию; кэширование всех элементов отключено. QGraphicsItem::paint() вызывается каждый раз, когда элемент требует перерисовки.
QGraphicsItem::ItemCoordinateCache 1 Кэширование включено для логической (локальной) системы координат элемента. QGraphicsItem создаёт буфер пикселей вне экрана с настраиваемым размером/разрешением, который можно передать в QGraphicsItem::setCacheMode(). Качество отображения, как правило, ухудшается в зависимости от разрешения кэша и преобразования элемента. В первый раз при перерисовке элемента он будет отрисовываться в кэш, а затем кэш будет повторно использоваться при каждой последующей перерисовке. Кэш также повторно используется при преобразовании элемента. Для изменения разрешения кэша можно повторно вызвать setCacheMode().
QGraphicsItem::DeviceCoordinateCache 2 Кэширование включено на уровне устройства отображения в координатах устройства. Этот режим предназначен для элементов, которые могут перемещаться, но не поворачиваются, масштабируются или искажаются. Если элемент преобразуется непосредственно или косвенно, кэш будет автоматически пересоздан. В отличие от ItemCoordinateCacheMode, DeviceCoordinateCache всегда рендерит с максимальным качеством.

Это перечисление было добавлено или изменено в Qt 4.4.

См. также QGraphicsItem::setCacheMode().

enum QGraphicsItem::GraphicsItemChange

Этот перечисление описывает изменения состояния, о которых уведомляет QGraphicsItem::itemChange(). Уведомления отправляются при изменениях состояния, и в некоторых случаях можно внести коррективы (см. документацию по каждому изменению для подробностей).

Примечание: Будьте осторожны при вызове функций на самом QGraphicsItem внутри itemChange(), так как некоторые вызовы функций могут привести к нежелательной рекурсии. Например, вы не можете вызвать setPos() в itemChange() при уведомлении о изменении положения элемента, так как функция setPos() снова вызовет itemChange(ItemPositionChange). Вместо этого вы можете вернуть новую, скорректированную позицию из itemChange().

Константа Значение Описание
QGraphicsItem::ItemEnabledChange 3 Изменяется состояние активности элемента. Если элемент в данный момент активен, он станет неактивным, и наоборот. Аргумент value — новое состояние активности (т.е. true или false). Не вызывайте setEnabled() в itemChange(), поскольку это уведомление уже доставлено. Вместо этого вы можете вернуть новое состояние из itemChange().
QGraphicsItem::ItemEnabledHasChanged 13 Состояние активности элемента изменилось. Аргумент value — новое состояние активности (т.е. true или false). Не вызывайте setEnabled() в itemChange(), поскольку это уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemMatrixChange 1 Изменяется матрица аффинного преобразования элемента. Это значение устарело; вы можете использовать ItemTransformChange вместо этого.
QGraphicsItem::ItemPositionChange 0 Изменяется позиция элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется локальная позиция элемента относительно его родителя (т.е. в результате вызова setPos() или moveBy()). Аргумент value — новая позиция (т.е. QPointF). Вы можете вызвать pos() для получения исходной позиции. Не вызывайте setPos() или moveBy() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новую, скорректированную позицию из itemChange(). После этого уведомления QGraphicsItem немедленно отправляет уведомление ItemPositionHasChanged, если позиция изменилась.
QGraphicsItem::ItemPositionHasChanged 9 Позиция элемента изменилась. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилась локальная позиция элемента относительно его родителя. Аргумент value — новая позиция (та же, что и pos()), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения).
QGraphicsItem::ItemTransformChange 8 Изменяется матрица преобразования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется локальная матрица преобразования элемента (т.е. в результате вызова setTransform(). Аргумент value — новая матрица (т.е. QTransform); для получения старой матрицы вызовите transform(). Не вызывайте setTransform() или устанавливайте какие-либо свойства преобразования в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новую матрицу из itemChange(). Это уведомление не отправляется, если вы изменяете свойства преобразования.
QGraphicsItem::ItemTransformHasChanged 10 Матрица преобразования элемента изменилась либо потому, что был вызван setTransform, либо потому, что изменилось одно из свойств преобразования. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилась локальная матрица преобразования элемента. Аргумент value — новая матрица (та же, что и transform()), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения).
QGraphicsItem::ItemRotationChange 28 Изменяется свойство поворота элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство поворота элемента (т.е. в результате вызова setRotation()). Аргумент value — новый угол поворота (т.е. double); для получения старого угла поворота вызовите rotation(). Не вызывайте setRotation() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новый угол поворота из itemChange().
QGraphicsItem::ItemRotationHasChanged 29 Свойство поворота элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство поворота элемента. Аргумент value — новый угол поворота (т.е. double), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения). Не вызывайте setRotation() в itemChange(), поскольку это уведомление уже доставлено.
QGraphicsItem::ItemScaleChange 30 Изменяется свойство масштабирования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство масштабирования элемента (т.е. в результате вызова setScale()). Аргумент value — новый масштаб (т.е. double); для получения старого масштаба вызовите scale(). Не вызывайте setScale() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новый масштаб из itemChange().
QGraphicsItem::ItemScaleHasChanged 31 Свойство масштабирования элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство масштабирования элемента. Аргумент value — новый масштаб (т.е. double), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения). Не вызывайте setScale() в itemChange(), поскольку это уведомление уже доставлено.
QGraphicsItem::ItemTransformOriginPointChange 32 Изменяется свойство точки начала преобразования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство точки начала преобразования элемента (т.е. в результате вызова setTransformOriginPoint()). Аргумент value — новая точка начала (т.е. QPointF); для получения старой точки начала вызовите transformOriginPoint(). Не вызывайте setTransformOriginPoint() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новую точку начала преобразования из itemChange().
QGraphicsItem::ItemTransformOriginPointHasChanged 33 Свойство точки начала преобразования элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство точки начала преобразования элемента. Аргумент value — новая точка начала (т.е. QPointF), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения). Не вызывайте setTransformOriginPoint() в itemChange(), поскольку это уведомление уже доставлено.
QGraphicsItem::ItemSelectedChange 4 Изменяется состояние выделения элемента. Если элемент в данный момент выделен, он станет невыделенным, и наоборот. Аргумент value — новое состояние выделения (т.е. true или false). Не вызывайте setSelected() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новое состояние выделения из itemChange().
QGraphicsItem::ItemSelectedHasChanged 14 Состояние выделения элемента изменилось. Аргумент value — новое состояние выделения (т.е. true или false). Не вызывайте setSelected() в itemChange(), поскольку это уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemVisibleChange 2 Изменяется состояние видимости элемента. Если элемент в данный момент видим, он станет невидимым, и наоборот. Аргумент value — новое состояние видимости (т.е. true или false). Не вызывайте setVisible() в itemChange(), поскольку это уведомление уже доставлено; вместо этого вы можете вернуть новое состояние видимости из itemChange().
QGraphicsItem::ItemVisibleHasChanged 12 Состояние видимости элемента изменилось. Аргумент value — новое состояние видимости (т.е. true или false). Не вызывайте setVisible() в itemChange(), поскольку это уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemParentChange 5 Родительский элемент изменяется. Аргумент value — это новый родительский элемент (т.е. указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange(), так как уведомление уже доставлено; вместо этого вы можете вернуть нового родителя из itemChange().
QGraphicsItem::ItemParentHasChanged 15 Родительский элемент изменился. Аргумент value — это новый родитель (т.е. указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemChildAddedChange 6 К этому элементу добавлен дочерний элемент. Аргумент value — это новый дочерний элемент (т.е. указатель на QGraphicsItem). Не передавайте этот элемент в функцию setParentItem() любого элемента, так как уведомление уже доставлено. Возвращаемое значение не используется; вы не можете ничего изменить в этом уведомлении. Обратите внимание, что новый дочерний элемент может быть не полностью сформирован, когда это уведомление отправляется; вызов чисто виртуальных функций для дочернего элемента может привести к сбою.
QGraphicsItem::ItemChildRemovedChange 7 Дочерний элемент удален из этого элемента. Аргумент value — это дочерний элемент, который собирается быть удален (т.е. указатель на QGraphicsItem). Возвращаемое значение не используется; вы не можете ничего изменить в этом уведомлении.
QGraphicsItem::ItemSceneChange 11 Элемент перемещен в новую сцену. Это уведомление также отправляется, когда элемент добавлен в исходную сцену и когда он удален. Сцена элемента — это старая сцена, или nullptr, если элемент еще не добавлен в сцену. Аргумент value — это новая сцена (т.е. указатель на QGraphicsScene), или nullptr, если элемент удален из сцены. Не перезаписывайте это изменение, передавая этот элемент в QGraphicsScene::addItem(), так как уведомление уже доставлено; вместо этого вы можете вернуть новую сцену из itemChange(). Используйте эту функцию с осторожностью; возражение против изменения сцены может быстро привести к нежелательной рекурсии.
QGraphicsItem::ItemSceneHasChanged 16 Сцена элемента изменилась. Сцена элемента — это новая сцена. Это уведомление также отправляется, когда элемент добавлен в исходную сцену и когда он удален. Аргумент value — это новая сцена (т.е. указатель на QGraphicsScene). Не вызывайте setScene() в itemChange(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemCursorChange 17 Курсор элемента изменяется. Аргумент value — это новый курсор (т.е. QCursor). Не вызывайте setCursor() в itemChange(), так как уведомление уже доставлено. Вместо этого вы можете вернуть новый курсор из itemChange().
QGraphicsItem::ItemCursorHasChanged 18 Курсор элемента изменился. Аргумент value — это новый курсор (т.е. QCursor). Не вызывайте setCursor(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemToolTipChange 19 Подсказка элемента изменяется. Аргумент value — это новая подсказка (т.е. QToolTip). Не вызывайте setToolTip() в itemChange(), так как уведомление уже доставлено. Вместо этого вы можете вернуть новую подсказку из itemChange().
QGraphicsItem::ItemToolTipHasChanged 20 Подсказка элемента изменилась. Аргумент value — это новая подсказка (т.е. QToolTip). Не вызывайте setToolTip(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemFlagsChange 21 Флаги элемента изменяются. Аргумент value — это новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange(), так как уведомление уже доставлено. Вместо этого вы можете вернуть новые флаги из itemChange().
QGraphicsItem::ItemFlagsHaveChanged 22 Флаги элемента изменились. Аргумент value — это новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemZValueChange 23 Значение Z элемента изменяется. Аргумент value — это новое значение Z (т.е. double). Не вызывайте setZValue() в itemChange(), так как уведомление уже доставлено. Вместо этого вы можете вернуть новое значение Z из itemChange().
QGraphicsItem::ItemZValueHasChanged 24 Значение Z элемента изменилось. Аргумент value — это новое значение Z (т.е. double). Не вызывайте setZValue(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemOpacityChange 25 Изменяется непрозрачность элемента. Аргумент value — это новая непрозрачность (т.е. double). Не вызывайте setOpacity() в itemChange(), так как уведомление уже доставлено. Вместо этого вы можете вернуть новую непрозрачность из itemChange().
QGraphicsItem::ItemOpacityHasChanged 26 Непрозрачность элемента изменилась. Аргумент value — это новая непрозрачность (т.е. double). Не вызывайте setOpacity(), так как уведомление уже доставлено. Возвращаемое значение игнорируется.
QGraphicsItem::ItemScenePositionHasChanged 27 Изменилось положение элемента на сцене. Это уведомление отправляется, если установлен флаг ItemSendsScenePositionChanges, и после изменения позиции элемента на сцене (т.е. изменились положение или преобразование элемента самого по себе или положение или преобразование любого предка). Аргумент value — это новое положение на сцене (то же, что и scenePos()), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т.е. уведомление только для чтения).

enum QGraphicsItem::GraphicsItemFlagflags QGraphicsItem::GraphicsItemFlags

Этот перечисление описывает различные флаги, которые можно установить на элементе, чтобы переключить различные функции в поведении элемента.

Все флаги по умолчанию отключены.

Постоянная Значение Описание
QGraphicsItem::ItemIsMovable 0x1 Элемент поддерживает интерактивное перемещение с помощью мыши. Нажав на элемент и перетащив его, элемент будет перемещаться вместе с курсором мыши. Если у элемента есть дочерние элементы, все дочерние элементы также перемещаются. Если элемент является частью выделения, все выделенные элементы также перемещаются. Эта функция предоставляется как удобство через базовую реализацию обработчиков событий мыши QGraphicsItem.
QGraphicsItem::ItemIsSelectable 0x2 Элемент поддерживает выделение. Включение этой функции включит setSelected() для переключения выделения элемента. Это также позволит элементу быть автоматически выделенным в результате вызова QGraphicsScene::setSelectionArea(), щелчка по элементу или с помощью выделения резиновой лентой в QGraphicsView.
QGraphicsItem::ItemIsFocusable 0x4 Элемент поддерживает фокус ввода с клавиатуры (т.е. это элемент ввода). Включение этого флага позволит элементу принимать фокус, что, в свою очередь, позволит передавать события клавиш в QGraphicsItem::keyPressEvent() и QGraphicsItem::keyReleaseEvent().
QGraphicsItem::ItemClipsToShape 0x8 Элемент обрезается по своей собственной форме. Элемент не может рисовать или получать события мыши, планшета, перетаскивания и наведения курсора вне своей формы. Он отключен по умолчанию. Это поведение обеспечивается QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был представлен в Qt 4.3.
QGraphicsItem::ItemClipsChildrenToShape 0x10 Элемент обрезает рисование всех своих потомков по своей форме. Элементы, которые являются либо прямыми, либо косвенными потомками этого элемента, не могут рисовать вне формы этого элемента. По умолчанию этот флаг отключен; дети могут рисовать где угодно. Это поведение обеспечивается QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был представлен в Qt 4.3.

Примечание: Этот флаг похож на ItemContainsChildrenInShape, но дополнительно обеспечивает ограничение, обрезая потомков.

END_OF_DOCUMENT_MARKER
Постоянная Значение Описание
QGraphicsItem::ItemIgnoresTransformations 0x20 Элемент игнорирует унаследованные преобразования (т.е., его положение всё ещё привязано к родителю, но преобразования вращения, масштабирования или сдвига родителя или представления игнорируются). Этот флаг полезен для сохранения горизонтальности и неизменного масштаба текстовых элементов, чтобы они оставались читаемыми, если представление преобразовано. При установке этого флага геометрия элемента в представлении и геометрия в сцене сохраняются отдельно. Необходимо вызвать deviceTransform(), чтобы отобразить координаты и обнаружить коллизии в представлении. По умолчанию этот флаг отключён. Этот флаг был введён в Qt 4.3.

Примечание: При установке этого флага вы всё ещё можете масштабировать сам элемент, и это преобразование масштабирования повлияет на дочерние элементы.

Постоянная Значение Описание
QGraphicsItem::ItemIgnoresParentOpacity 0x40 Элемент игнорирует непрозрачность родителя. Эффективная непрозрачность элемента совпадает с его собственной непрозрачностью; она не объединяется с непрозрачностью родителя. Этот флаг позволяет вашему элементу сохранять абсолютную непрозрачность, даже если родитель полупрозрачен. Этот флаг был введён в Qt 4.5.
QGraphicsItem::ItemDoesntPropagateOpacityToChildren 0x80 Элемент не распространяет свою непрозрачность на дочерние элементы. Этот флаг позволяет вам создавать полупрозрачный элемент, который не влияет на непрозрачность его дочерних элементов. Этот флаг был введён в Qt 4.5.
QGraphicsItem::ItemStacksBehindParent 0x100 Элемент размещается позади родительского элемента. По умолчанию дочерние элементы размещаются поверх родительского элемента. Но при установке этого флага дочерний элемент будет размещен позади него. Этот флаг полезен для эффектов тени и для объектов оформления, которые следуют за геометрией родительского элемента, не рисуя поверх него. Этот флаг был введён в Qt 4.5.
QGraphicsItem::ItemUsesExtendedStyleOption 0x200 Элемент использует либо exposedRect, либо matrix в QStyleOptionGraphicsItem. По умолчанию exposedRect инициализируется прямоугольником boundingRect() элемента, а matrix не преобразуется. Вы можете включить этот флаг, чтобы установить параметры стиля с более тонкими значениями. Обратите внимание, что QStyleOptionGraphicsItem::levelOfDetail не затрагивается этим флагом и всегда инициализируется значением 1. Используйте QStyleOptionGraphicsItem::levelOfDetailFromTransform(), если вам нужно более высокое значение. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemHasNoContents 0x400 Элемент ничего не рисует (т.е., вызов paint() для элемента не имеет эффекта). Вы должны установить этот флаг для элементов, которые не нуждаются в рисовании, чтобы гарантировать, что Вид графики избегает ненужной подготовки к рисованию. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemSendsGeometryChanges 0x800 Элемент включает уведомления itemChange() для ItemPositionChange, ItemPositionHasChanged, ItemMatrixChange, ItemTransformChange, ItemTransformHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange и ItemTransformOriginPointHasChanged. По причинам производительности эти уведомления отключены по умолчанию. Необходимо включить этот флаг, чтобы получать уведомления о перемещении и изменениях преобразования. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemAcceptsInputMethod 0x1000 Элемент поддерживает методы ввода, обычно используемые для азиатских языков. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemNegativeZStacksBehindParent 0x2000 Элемент автоматически размещается позади родителя, если его значение z отрицательное. Этот флаг позволяет setZValue() переключать ItemStacksBehindParent. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemIsPanel 0x4000 Элемент является панелью. Панель обеспечивает обработку активации и фокуса. Одновременно может быть активна только одна панель (см. QGraphicsItem::isActive()). Когда ни одна панель не активна, QGraphicsScene активирует все элементы, которые не являются панелями. Элементы окна (т.е., QGraphicsItem::isWindow() возвращает true) являются панелями. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemSendsScenePositionChanges 0x10000 Элемент включает уведомления itemChange() для ItemScenePositionHasChanged. По причинам производительности эти уведомления отключены по умолчанию. Необходимо включить этот флаг, чтобы получать уведомления об изменениях положения в сцене. Этот флаг был введён в Qt 4.6.
QGraphicsItem::ItemContainsChildrenInShape 0x80000 Этот флаг указывает, что все прямые или косвенные дочерние элементы элемента рисуются только внутри формы элемента. В отличие от ItemClipsChildrenToShape, это ограничение не принуждается. Установите ItemContainsChildrenInShape, когда вы вручную гарантируете, что отрисовка ограничена формой элемента, и хотите избежать затрат, связанных с принудительным обрезкой. Установка этого флага позволяет более эффективно выполнять отрисовку и обнаружение коллизий. Флаг отключен по умолчанию.

Примечание: Если установлены оба флага, ItemClipsChildrenToShape и этот флаг, обрезка будет принуждена. Это эквивалентно просто установке ItemClipsChildrenToShape.

Этот флаг был введён в Qt 5.4.

Тип GraphicsItemFlags является псевдонимом для QFlags<GraphicsItemFlag>. Он хранит результат объединения по "ИЛИ" значений GraphicsItemFlag.

перечисление QGraphicsItem::PanelModality

Это перечисление задаёт поведение модальной панели. Модальная панель — это такая панель, которая блокирует ввод для других панелей. Обратите внимание, что элементы, являющиеся дочерними элементами модальной панели, не блокируются.

Значения:

Постоянная Значение Описание
QGraphicsItem::NonModal 0 Панель не является модальной и не блокирует ввод для других панелей. Это значение по умолчанию для панелей.
QGraphicsItem::PanelModal 1 Панель является модальной для единой иерархии элементов и блокирует ввод для её родительской панели, всех панелей-предков и всех элементов-братьев родительской и панелей-предков.
QGraphicsItem::SceneModal 2 Окно является модальным для всей сцены и блокирует ввод для всех панелей.

Это перечисление было введено или изменено в Qt 4.6.

См. также QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality() и QGraphicsItem::ItemIsPanel.

перечисление QGraphicsItem::anonymous

Значение, возвращаемое виртуальной функцией type() в стандартных классах графических элементов Qt. Все такие стандартные классы графических элементов в Qt связаны с уникальным значением для Type, например, значение, возвращаемое QGraphicsPathItem::type(), равно 2.

Постоянная Значение Описание
QGraphicsItem::Type 1
class QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
 public:
  enum { Type = 2 };
    int type() const override { return Type; }
  ...
};
QGraphicsItem::UserType 65536 Наименьшее значение, возвращаемое виртуальной функцией type() для пользовательских подклассов QGraphicsItem.
class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

Документация функций-членов

QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)

Конструктор QGraphicsItem с заданным элементом parent. Он не изменяет родительский объект, возвращаемый QObject::parent().

Если parent равен nullptr, вы можете добавить элемент в сцену, вызвав QGraphicsScene::addItem(). Тогда элемент станет верхнеуровневым элементом.

См. также QGraphicsScene::addItem() и setParentItem().

[virtual] QGraphicsItem::~QGraphicsItem()

Удаляет QGraphicsItem и все его дочерние элементы. Если этот элемент в настоящее время связан со сценой, элемент будет удалён из сцены перед удалением.

Примечание: Более эффективнее удалить элемент из QGraphicsScene перед удалением элемента.

bool QGraphicsItem::acceptDrops() const

Возвращает true , если этот элемент может принимать события перетаскивания и опускания; в противном случае возвращает false. По умолчанию элементы не принимают события перетаскивания и опускания; они прозрачны для них.

См. также setAcceptDrops().

bool QGraphicsItem::acceptHoverEvents() const

Возвращает true , если элемент принимает события наведения курсора (QGraphicsSceneHoverEvent); в противном случае возвращает false. По умолчанию элементы не принимают события наведения курсора.

Эта функция была введена в Qt 4.4.

См. также setAcceptHoverEvents() и setAcceptedMouseButtons().

bool QGraphicsItem::acceptTouchEvents() const

Возвращает true , если элемент принимает события касания; в противном случае возвращает false. По умолчанию элементы не принимают события касания.

Эта функция была введена в Qt 4.6.

См. также setAcceptTouchEvents().

Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const

Возвращает кнопки мыши, для которых этот элемент принимает события мыши. По умолчанию принимаются все кнопки мыши.

Если элемент принимает кнопку мыши, он станет элементом захвата мыши, когда для этой кнопки мыши будет доставлено событие нажатия мыши. Однако, если элемент не принимает кнопку, QGraphicsScene перенаправит события мыши первому элементу под ним, который это делает.

См. также setAcceptedMouseButtons() и mousePressEvent().

[virtual] void QGraphicsItem::advance(int phase)

Эта виртуальная функция вызывается дважды для всех элементов слотом QGraphicsScene::advance(). В первой фазе все элементы вызываются с phase == 0, что указывает, что элементы на сцене готовы к продвижению, а затем все элементы вызываются с phase == 1. Переопределите эту функцию, чтобы обновить свой элемент, если вам нужна простая анимация, управляемая сценой.

По умолчанию ничего не делает.

Эта функция предназначена для анимации. Альтернативой является множественное наследование от QObject и QGraphicsItem и использование Фреймворка анимации.

См. также QGraphicsScene::advance() и QTimeLine.

[pure virtual] QRectF QGraphicsItem::boundingRect() const

Эта чисто виртуальная функция определяет внешние границы элемента в виде прямоугольника; вся отрисовка должна быть ограничена внутри области элемента. QGraphicsView использует это для определения, требует ли элемент перерисовки.

Хотя форма элемента может быть произвольной, прямоугольник области всегда прямоугольный и не зависит от преобразования элементов.

Если вы хотите изменить прямоугольник области элемента, вы должны сначала вызвать prepareGeometryChange(). Это уведомляет сцену о предстоящем изменении, чтобы она могла обновить индекс геометрии элемента; в противном случае сцена не будет знать о новой геометрии элемента, и результаты будут неопределёнными (как правило, остаются артефакты отрисовки в представлении).

Переопределите эту функцию, чтобы позволить QGraphicsView определить, какие части виджета, если таковые имеются, необходимо перерисовать.

Примечание: для форм, которые рисуют контур/штрих, важно включить половину ширины пера в прямоугольник области. Однако нет необходимости компенсировать сглаживание.

Пример:

QRectF CircleItem::boundingRect() const
{
    qreal penWidth = 1;
    return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
                  diameter + penWidth, diameter + penWidth);
}

См. также boundingRegion(), shape(), contains(), Система координат графического представления и prepareGeometryChange().

QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const

Возвращает область границ для этого элемента. Пространство координат возвращенной области зависит от itemToDeviceTransform. Если вы передаете тождественное преобразование QTransform в качестве параметра, эта функция вернет локальную область координат.

Область границ описывает грубую контурную линию визуального содержимого элемента. Хотя её вычисление дорогостоящее, она также более точная, чем boundingRect(), и может помочь избежать ненужной перерисовки при обновлении элемента. Это особенно эффективно для тонких элементов (например, линий или простых полигонов). Вы можете настроить точность для области границ, вызвав setBoundingRegionGranularity(). По умолчанию точность равна 0; в этом случае область границ элемента совпадает с его прямоугольником области.

itemToDeviceTransform — это преобразование из координат элемента в координаты устройства. Если вы хотите, чтобы эта функция возвращала QRegion в координатах сцены, вы можете передать sceneTransform() в качестве аргумента.

Эта функция была введена в Qt 4.4.

См. также boundingRegionGranularity().

qreal QGraphicsItem::boundingRegionGranularity() const

Возвращает точность области границ элемента; значение от 0 до 1 включительно. Значение по умолчанию равно 0 (т. е. наименьшая точность, где область границ соответствует прямоугольнику области элемента).

Эта функция была введена в Qt 4.4.

См. также setBoundingRegionGranularity().

QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const

Возвращает режим кеширования для этого элемента. Режим по умолчанию — NoCache (т. е. кеширование отключено, и вся отрисовка выполняется немедленно).

Эта функция была введена в Qt 4.4.

См. также setCacheMode().

QList<QGraphicsItem *> QGraphicsItem::childItems() const

Возвращает список дочерних элементов этого элемента.

Элементы упорядочены по порядку стекирования. Это учитывает как порядок вставки элементов, так и их значения Z.

Эта функция была введена в Qt 4.4.

См. также setParentItem(), zValue() и Сортировка.

QRectF QGraphicsItem::childrenBoundingRect() const

Возвращает прямоугольник области границ потомков этого элемента (т. е. его дочерних элементов, их дочерних элементов и т. д.) в локальных координатах. Прямоугольник будет содержать всех потомков после их отображения в локальных координатах. Если у элемента нет дочерних элементов, эта функция возвращает пустой QRectF.

Это не включает собственный прямоугольник области элемента; он возвращает только накопленный прямоугольник области границ потомков. Если вам нужно включить прямоугольник области этого элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью QRectF::operator|().

Эта функция имеет линейную сложность; она определяет размер возвращаемого прямоугольника области, перебирая всех потомков.

См. также boundingRect() и sceneBoundingRect().

void QGraphicsItem::clearFocus()

Удаляет фокус ввода с клавиатуры с элемента.

Если у элемента есть фокус, ему отправляется событие focus out, чтобы сообщить, что он вот-вот потеряет фокус.

Только элементы, установившие флаг ItemIsFocusable, или виджеты, установившие соответствующую политику фокуса, могут принимать фокус ввода с клавиатуры.

См. также setFocus(), hasFocus() и QGraphicsWidget::focusPolicy.

QPainterPath QGraphicsItem::clipPath() const

Возвращает траекторию обрезки этого элемента или пустую QPainterPath, если этот элемент не обрезается. Траектория обрезки ограничивает внешний вид и взаимодействие элемента (т. е. ограничивает область, в пределах которой элемент может рисовать и получать события).

Вы можете включить обрезку, установив флаги ItemClipsToShape или ItemClipsChildrenToShape. Траектория обрезки элемента вычисляется путем пересечения траекторий обрезки всех предков. Если элемент устанавливает ItemClipsToShape, окончательная обрезка пересекается с собственной формой элемента.

Примечание: Обрезка вносит штраф за производительность для всех вовлеченных элементов; в общем случае следует избегать использования обрезки, если это возможно (например, если ваши элементы всегда рисуются внутри boundingRect() или shape() границ, обрезка не требуется).

Эта функция была введена в Qt 4.5.

См. также isClipped(), shape() и setFlags().

[virtual] bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Возвращает true , если этот элемент пересекается с other; в противном случае возвращает false.

Режим mode применяется к other, а полученная форма или прямоугольник ограничивающей рамки сравниваются с формой этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape; other сталкивается с этим элементом, если он либо пересекается, либо содержит, либо содержится в форме этого элемента (см. Qt::ItemSelectionMode для получения подробностей).

Реализация по умолчанию основана на пересечении форм, и она вызывает shape() для обоих элементов. Поскольку сложность произвольного пересечения форм растёт на порядок при использовании сложных форм, эта операция может заметно занимать время. У вас есть возможность переопределить эту функцию в подклассе QGraphicsItem, чтобы предоставить собственный алгоритм. Это позволяет использовать естественные ограничения в формах собственных элементов, чтобы повысить производительность обнаружения столкновений. Например, столкновение двух не преобразованных идеально круговых элементов может быть определено очень эффективно путём сравнения их позиций и радиусов.

Обратите внимание, что при переопределении этой функции и вызове shape() или boundingRect() для other возвращаемые координаты должны быть сопоставлены с системой координат этого элемента перед любым пересечением.

См. также contains() и shape().

[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Возвращает true , если этот элемент сталкивается с path.

Столкновение определяется по mode. Значение по умолчанию для mode — Qt::IntersectsItemShape; path сталкивается с этим элементом, если он либо пересекается, либо содержит, либо содержится в форме этого элемента.

Обратите внимание, что эта функция проверяет, содержится ли форма или прямоугольник ограничивающей рамки элемента (в зависимости от mode) в path, а не содержится ли path в форме или прямоугольнике ограничивающей рамки элементов.

См. также collidesWithItem(), contains() и shape().

QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Возвращает список всех элементов, которые сталкиваются с этим элементом.

Способ обнаружения столкновений определяется путём применения mode к элементам, которые сравниваются с этим элементом, т.е. форма или прямоугольник ограничивающей рамки каждого элемента проверяется по отношению к форме этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape.

См. также collidesWithItem().

QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const

Возвращает ближайший общий предковый элемент этого элемента и other или nullptr , если other nullptr, или общего предка нет.

Эта функция была добавлена в Qt 4.4.

См. также isAncestorOf().

[virtual] bool QGraphicsItem::contains(const QPointF &point) const

Возвращает true , если этот элемент содержит point, которая находится в локальных координатах; в противном случае возвращается false. Чаще всего он вызывается из QGraphicsView для определения того, какой элемент находится под курсором, и поэтому реализация этой функции должна быть максимально простой.

По умолчанию эта функция вызывает shape(), но вы можете переопределить её в подклассе, чтобы предоставить (возможно, более эффективную) реализацию.

См. также shape(), boundingRect() и collidesWithPath().

[virtual protected] void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)

Обработчик событий может быть переопределён в подклассе для обработки событий контекстного меню. Параметр 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().

QCursor QGraphicsItem::cursor() const

Возвращает текущую форму курсора для элемента. Курсор мыши примет эту форму, когда он окажется над этим элементом. Список предопределённых объектов курсора см. в списке предопределённых объектов курсора.

Элемент редактора может использовать курсор в виде луча:

item->setCursor(Qt::IBeamCursor);

Если курсор не был установлен, используется курсор элемента под ним.

См. также setCursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().

QVariant QGraphicsItem::data(int key) const

Возвращает пользовательские данные этого элемента для ключа 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().

QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const

Возвращает матрицу преобразования устройства этого элемента, используя viewportTransform для отображения координат сцены в координаты устройства. Эта матрица может быть использована для отображения координат и геометрических форм из локальной системы координат этого элемента в систему координат представления (или любой другой системы координат). Для отображения координат из представления необходимо сначала инвертировать возвращённую матрицу.

Пример:

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0));
// returns the item's (0, 0) point in view's viewport coordinates

rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100));
// returns view's viewport's (100, 100) coordinate in item coordinates

Эта функция эквивалентна комбинированию преобразования сцены этого элемента с преобразованием представления просмотра, но она также понимает флаг ItemIgnoresTransformations. Преобразование устройства может использоваться для точного отображения координат (и обнаружения столкновений) для элементов, не подлежащих преобразованию.

Эта функция была добавлена в Qt 4.3.

См. также transform(), setTransform(), scenePos(), Система координат представления графики и itemTransform().

[virtual protected] void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий drag enter для этого элемента. События drag enter генерируются при входе курсора в область элемента.

Приняв событие (т.е., вызвав QEvent::accept()), элемент примет события drop, помимо получения событий drag move и drag leave. В противном случае событие будет проигнорировано и передано элементу под ним. Если событие принято, элемент получит событие drag move перед тем, как управление вернётся в цикл событий.

Типичная реализация dragEnterEvent принимает или игнорирует event в зависимости от ассоциированных данных mime в event. Пример:

CustomItem::CustomItem()
{
    setAcceptDrops(true);
    ...
}

void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
    event->setAccepted(event->mimeData()->hasFormat("text/plain"));
}

Элементы по умолчанию не получают событий drag and drop; для включения этой функции вызовите setAcceptDrops(true).

Реализация по умолчанию ничего не делает.

См. также dropEvent(), dragMoveEvent() и dragLeaveEvent().

[virtual protected] void QGraphicsItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий drag leave для этого элемента. События drag leave генерируются при выходе курсора из области элемента. Чаще всего вам не нужно переопределять эту функцию, но она может быть полезна для сброса состояния в вашем элементе (например, выделения).

Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.

Элементы по умолчанию не получают событий drag and drop; для включения этой функции вызовите setAcceptDrops(true).

Реализация по умолчанию ничего не делает.

См. также dragEnterEvent(), dropEvent() и dragMoveEvent().

[virtual protected] void QGraphicsItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий drag move для этого элемента. События drag move генерируются при перемещении курсора внутри области элемента. Чаще всего вам не нужно переопределять эту функцию; она используется для указания того, что только части элемента могут принимать drop.

Вызов QEvent::ignore() или QEvent::accept() для event переключает возможность элемента принимать падения в указанном положении. По умолчанию, event принимается, что означает, что элемент допускает падения в указанной позиции.

Элементы по умолчанию не получают события перетаскивания и падения; для включения этой функции вызовите setAcceptDrops(true).

Реализация по умолчанию ничего не делает.

См. также dropEvent(), dragEnterEvent() и dragLeaveEvent().

[virtual protected] void QGraphicsItem::dropEvent(QGraphicsSceneDragDropEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий падения для данного элемента. Элементы могут получать события падения только в том случае, если последнее событие перемещения перетаскивания было принято.

Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.

Элементы по умолчанию не получают события перетаскивания и падения; для включения этой функции вызовите setAcceptDrops(true).

Реализация по умолчанию ничего не делает.

См. также dragEnterEvent(), dragMoveEvent() и dragLeaveEvent().

qreal QGraphicsItem::effectiveOpacity() const

Возвращает эффективную непрозрачность этого элемента, которая находится в диапазоне от 0,0 (прозрачный) до 1,0 (непрозрачный). Это значение представляет собой комбинацию локальной непрозрачности этого элемента и непрозрачностей его родительского элемента и предков. Эффективная непрозрачность определяет, как отображается элемент.

Эта функция была добавлена в Qt 4.5.

См. также opacity(), setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.

void QGraphicsItem::ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)

Если этот элемент является частью сцены, отображаемой QGraphicsView, эта вспомогательная функция попытается прокрутить представление, чтобы гарантировать, что rect будет виден внутри области просмотра. Если rect — пустая область (по умолчанию), QGraphicsItem будет использовать область элемента по умолчанию. xmargin и ymargin — количество пикселей, используемых для отступов.

Если указанную область невозможно достичь, содержимое прокручивается до ближайшей допустимой позиции.

Если этот элемент не отображается в QGraphicsView, эта функция ничего не делает.

См. также QGraphicsView::ensureVisible().

void QGraphicsItem::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = ..., int ymargin = ...)

Эта вспомогательная функция эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).

bool QGraphicsItem::filtersChildEvents() const

Возвращает true, если этот элемент фильтрует события дочерних элементов (т.е., все события, предназначенные для любого из его дочерних элементов, вместо этого отправляются этому элементу); в противном случае возвращается false.

Значение по умолчанию — false; события дочерних элементов не фильтруются.

Эта функция была добавлена в Qt 4.6.

См. также setFiltersChildEvents().

QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const

Возвращает флаги этого элемента. Флаги описывают, какие настраиваемые функции элемента включены, а какие нет. Например, если флаги включают ItemIsFocusable, элемент может принимать фокус.

По умолчанию флаги не включены.

См. также setFlags() и setFlag().

[virtual protected] void QGraphicsItem::focusInEvent(QFocusEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий фокусировки для этого элемента. Реализация по умолчанию вызывает ensureVisible().

См. также focusOutEvent(), sceneEvent() и setFocus().

QGraphicsItem *QGraphicsItem::focusItem() const

Если у этого элемента, дочернего элемента или потомка этого элемента в данный момент есть фокус, эта функция вернёт указатель на этот элемент. Если у ни одного потомка нет фокуса, возвращается nullptr.

Эта функция была добавлена в Qt 4.6.

См. также hasFocus(), setFocus() и QWidget::focusWidget().

[virtual protected] void QGraphicsItem::focusOutEvent(QFocusEvent *event)

Этот обработчик событий для события event может быть переопределён для получения событий выхода из фокуса для этого элемента. Реализация по умолчанию ничего не делает.

См. также focusInEvent(), sceneEvent() и setFocus().

QGraphicsItem *QGraphicsItem::focusProxy() const

Возвращает прокси фокуса для этого элемента или nullptr, если у этого элемента нет прокси фокуса.

Эта функция была добавлена в Qt 4.6.

См. также setFocusProxy(), setFocus() и hasFocus().

void QGraphicsItem::grabKeyboard()

Захватывает ввод с клавиатуры.

Элемент будет получать все ввод с клавиатуры на сцену до тех пор, пока не произойдёт одно из следующих событий:

  • Элемент становится невидимым
  • Элемент удаляется со сцены
  • Элемент удаляется
  • Элемент вызывает ungrabKeyboard()
  • Другой элемент вызывает grabKeyboard(); элемент снова получит захват клавиатуры, когда другой элемент вызовет ungrabKeyboard().

Когда элемент получает захват клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет захват клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события можно использовать для обнаружения того, как ваш элемент получает или теряет захват клавиатуры другими способами, чем получение фокуса ввода.

В Qt почти никогда не требуется явно захватывать клавиатуру, так как Qt делает это разумно. В частности, Qt захватывает клавиатуру, когда ваш элемент получает фокус ввода, и отпускает его, когда ваш элемент теряет фокус ввода или когда элемент скрыт.

Обратите внимание, что захватывать ввод с клавиатуры могут только видимые элементы. Вызов grabKeyboard() для невидимого элемента не имеет эффекта.

События клавиатуры не затрагиваются.

Эта функция была добавлена в Qt 4.4.

См. также ungrabKeyboard(), grabMouse() и setFocus().

void QGraphicsItem::grabMouse()

Захватывает ввод с мыши.

Этот элемент будет получать все события мыши для сцены до тех пор, пока не произойдёт одно из следующих событий:

  • Элемент становится невидимым
  • Элемент удаляется со сцены
  • Элемент удаляется
  • Элемент вызывает ungrabMouse()
  • Другой элемент вызывает grabMouse(); элемент снова получит захват мыши, когда другой элемент вызовет ungrabMouse().

Когда элемент получает захват мыши, он получает событие QEvent::GrabMouse. Когда он теряет захват мыши, он получает событие QEvent::UngrabMouse. Эти события можно использовать для обнаружения того, как ваш элемент получает или теряет захват мыши другими способами, чем получение событий щелчка мышью.

В Qt почти никогда не требуется явно захватывать мышь, так как Qt делает это разумно. В частности, Qt захватывает мышь при нажатии кнопки мыши и удерживает захват до тех пор, пока не отпустите последнюю кнопку мыши. Кроме того, виджеты Qt::Popup неявно вызывают grabMouse() при отображении и ungrabMouse() при скрытии.

Обратите внимание, что захватывать ввод мыши могут только видимые элементы. Вызов grabMouse() для невидимого элемента не имеет эффекта.

События клавиатуры не затрагиваются.

См. также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().

QGraphicsEffect *QGraphicsItem::graphicsEffect() const

Возвращает указатель на эффект этого элемента, если он есть; в противном случае nullptr.

Эта функция была добавлена в Qt 4.6.

См. также setGraphicsEffect().

QGraphicsItemGroup *QGraphicsItem::group() const

Возвращает указатель на группу элементов этого элемента или nullptr, если этот элемент не является членом группы.

См. также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().

bool QGraphicsItem::hasCursor() const

Возвращает true если для этого элемента задан курсор; в противном случае возвращается false.

По умолчанию у элементов курсор не задан. cursor() вернёт стандартный курсор в виде стрелки.

См. также unsetCursor().

bool QGraphicsItem::hasFocus() const

Возвращает true если этот элемент активен, и он или его заместитель фокуса имеют фокус ввода с клавиатуры; в противном случае возвращает false.

См. также focusItem(), setFocus(), QGraphicsScene::setFocusItem() и isActive().

void QGraphicsItem::hide()

Скрывает элемент (элементы отображаются по умолчанию).

Эта функция-удобство эквивалентна вызову setVisible(false).

См. также show() и setVisible().

[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)

Обработчик событий для события event может быть переопределен для получения событий входа в область наведения для этого элемента. По умолчанию вызывается update; в противном случае ничего не делается.

Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.

См. также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().

[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)

Обработчик событий для события event может быть переопределен для получения событий выхода из области наведения для этого элемента. По умолчанию вызывается update; в противном случае ничего не делается.

Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.

См. также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptHoverEvents().

[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

Обработчик событий для события event может быть переопределен для получения событий перемещения в области наведения для этого элемента. По умолчанию ничего не делается.

Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.

См. также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().

[virtual protected] void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)

Обработчик событий для события event может быть переопределен для получения событий метода ввода для этого элемента. По умолчанию событие игнорируется.

См. также inputMethodQuery() и sceneEvent().

Qt::InputMethodHints QGraphicsItem::inputMethodHints() const

Возвращает текущие подсказки метода ввода для этого элемента.

Подсказки метода ввода актуальны только для элементов ввода. Эти подсказки используются методом ввода для указания того, как он должен работать. Например, если установлен флаг Qt::ImhNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только цифры.

Результат может варьироваться в зависимости от реализации метода ввода.

Эта функция была добавлена в Qt 4.6.

См. также setInputMethodHints() и inputMethodQuery().

[virtual protected] QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const

Этот метод актуален только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента, чтобы иметь возможность поддерживать сложные операции метода ввода, такие как поддержка окружающего текста и повторного преобразования. query указывает, какое свойство запрашивается.

См. также inputMethodEvent() и QInputMethodEvent.

void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)

Устанавливает фильтр событий для этого элемента на filterItem, что приводит к тому, что все события для этого элемента сначала проходят через функцию sceneEventFilter() filterItem.

Чтобы отфильтровать события другого элемента, установите этот элемент в качестве фильтра событий для другого элемента. Пример:

QGraphicsScene scene;
QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20));
QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20));

line->installSceneEventFilter(ellipse);
// line's events are filtered by ellipse's sceneEventFilter() function.

ellipse->installSceneEventFilter(line);
// ellipse's events are filtered by line's sceneEventFilter() function.

Элемент может фильтровать события только для других элементов в той же сцене. Также элемент не может фильтровать свои собственные события; вместо этого вы можете напрямую переопределить sceneEvent().

Для установки и использования фильтров событий сцены элементы должны принадлежать к сцене.

См. также removeSceneEventFilter(), sceneEventFilter() и sceneEvent().

bool QGraphicsItem::isActive() const

Возвращает true если этот элемент активен; в противном случае возвращает false.

Элемент может быть активным только если сцена активна. Элемент активен, если он или является потомком активной панели. Элементы в неактивных панелях не активны.

Элементы, которые не являются частью панели, следуют активации сцены, когда у сцены нет активной панели.

Только активные элементы могут получить фокус ввода.

Эта функция была добавлена в Qt 4.6.

См. также QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel() и isPanel().

bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const

Возвращает true если этот элемент является предком child (т.е., если этот элемент является родителем child или одним из предков родителя child).

См. также parentItem().

bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const

Возвращает true если этот элемент заблокирован модальной панелью, в противном случае false. Если blockingPanel не равен нулю, blockingPanel будет установлен на модальную панель, блокирующую этот элемент. Если этот элемент не заблокирован, blockingPanel не будет установлен этой функцией.

Эта функция всегда возвращает false для элементов, не находящихся в сцене.

Эта функция была добавлена в Qt 4.6.

См. также panelModality(), setPanelModality() и PanelModality.

bool QGraphicsItem::isClipped() const

Возвращает true если этот элемент обрезан. Элемент обрезан, если он установил флаг ItemClipsToShape или если он или любой из его предков установил флаг ItemClipsChildrenToShape.

Обрезка влияет на внешний вид элемента (т.е. рисование), а также на доставку событий мыши и наведения.

См. также clipPath(), shape() и setFlags().

bool QGraphicsItem::isEnabled() const

Возвращает true если элемент включен; в противном случае возвращается false.

См. также setEnabled().

bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const

Это перегруженная функция.

Возвращает true если rect полностью скрыта непрозрачной формой любого из элементов столкновения над ним (т.е. с более высоким значением Z, чем у этого элемента).

Эта функция была добавлена в Qt 4.3.

См. также opaqueArea().

bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const

Это перегруженная функция.

Эта функция-удобство эквивалентна вызову isObscured(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

[virtual] bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const

Возвращает true , если прямоугольник ограничивающей области этого элемента полностью скрыт непрозрачной формой элемента item.

Базовая реализация отображает opaqueArea() элемента item в систему координат текущего элемента и затем проверяет, полностью ли boundingRect() текущего элемента содержится внутри отображённой формы.

Вы можете переопределить эту функцию, чтобы реализовать собственный алгоритм определения, скрывает ли элемент item текущий элемент.

См. также opaqueArea() и isObscured().

bool QGraphicsItem::isPanel() const

Возвращает true , если элемент является панелью; в противном случае возвращает false.

Эта функция была введена в Qt 4.6.

См. также QGraphicsItem::panel() и ItemIsPanel.

bool QGraphicsItem::isSelected() const

Возвращает true , если этот элемент выбран; в противном случае возвращается false.

Элементы, которые находятся в группе, наследуют состояние выбора группы.

Элементы по умолчанию не выбраны.

См. также setSelected() и QGraphicsScene::setSelectionArea().

bool QGraphicsItem::isUnderMouse() const

Возвращает true , если этот элемент находится под курсором мыши в одном из представлений; в противном случае возвращается false.

Эта функция была введена в Qt 4.4.

См. также QGraphicsScene::views() и QCursor::pos().

bool QGraphicsItem::isVisible() const

Возвращает true , если элемент видимый; в противном случае возвращается false.

Обратите внимание, что общая видимость элемента не связана с тем, визуализируется ли он QGraphicsView.

См. также setVisible().

bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const

Возвращает true , если элемент виден для parent; в противном случае возвращается false. parent может быть nullptr, в этом случае функция вернёт, виден ли элемент для сцены.

Элемент может быть не виден своим предкам, даже если isVisible() имеет значение true. Он также может быть виден своим предкам, даже если isVisible() имеет значение false. Если какой-либо предок скрыт, то сам элемент будет неявным образом скрыт, и в этом случае функция вернёт false.

Эта функция была введена в Qt 4.4.

См. также isVisible() и setVisible().

bool QGraphicsItem::isWidget() const

Возвращает true , если этот элемент является виджетом (то есть, QGraphicsWidget); в противном случае возвращает false.

Эта функция была введена в Qt 4.4.

bool QGraphicsItem::isWindow() const

Возвращает true , если элемент является окном QGraphicsWidget, в противном случае возвращает false.

Эта функция была введена в Qt 4.4.

См. также QGraphicsWidget::windowFlags().

[virtual protected] QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)

Этот виртуальный метод вызывается QGraphicsItem для уведомления пользовательских элементов о том, что происходит какое-либо изменение состояния элемента. Переопределяя этот метод, вы можете отреагировать на изменение, и в некоторых случаях (в зависимости от change) можно внести корректировки.

change — это параметр изменяемого элемента. value — новое значение; тип значения зависит от change.

Пример:

QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
    if (change == ItemPositionChange && scene()) {
        // value is the new position.
        QPointF newPos = value.toPointF();
        QRectF rect = scene()->sceneRect();
        if (!rect.contains(newPos)) {
            // Keep the item inside the scene rect.
            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.

QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const

Возвращает QTransform, который отображает координаты из текущего элемента в элемент other. Если ok не равен null, и такого преобразования не существует, то булево значение, на которое указывает ok, будет установлено в false; в противном случае оно будет установлено в true.

Это преобразование предоставляет альтернативу функциям mapToItem() или mapFromItem(), возвращая соответствующее преобразование, чтобы вы могли отобразить формы и координаты самостоятельно. Это также помогает вам писать более эффективный код, когда многократно отображаете между одними и теми же двумя элементами.

Примечание: В редких случаях преобразования, отображающего между двумя элементами, не существует.

Эта функция была введена в Qt 4.5.

См. также mapToItem(), mapFromItem() и deviceTransform().

[virtual protected] void QGraphicsItem::keyPressEvent(QKeyEvent *event)

Обработчик событий для события event может быть переопределён для получения событий нажатия клавиш для этого элемента. По умолчанию реализация игнорирует событие. Если вы переопределите этот обработчик, событие по умолчанию будет принято.

Обратите внимание, что события клавиш получаются только для элементов, которые устанавливают флаг ItemIsFocusable, и которые имеют фокус ввода с клавиатуры.

См. также keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().

[virtual protected] void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)

Обработчик событий для события event может быть переопределён для получения событий отпускания клавиш для этого элемента. По умолчанию реализация игнорирует событие. Если вы переопределите этот обработчик, событие по умолчанию будет принято.

Обратите внимание, что события клавиш получаются только для элементов, которые устанавливают флаг ItemIsFocusable, и которые имеют фокус ввода с клавиатуры.

См. также keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const

Отображает точку point, которая находится в системе координат элемента item, в систему координат текущего элемента и возвращает отображённую координату.

Если item является nullptr, эта функция возвращает то же самое, что и mapFromScene().

См. также itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() и Система координат графического представления.

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const

Отображает прямоугольник rect, который находится в системе координат элемента item, в систему координат текущего элемента и возвращает отображённый прямоугольник как полигон.

Если item является nullptr, эта функция возвращает то же самое, что и mapFromScene().

См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Система координат графического представления.

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const

Отображает многоугольник polygon, который находится в системе координат элемента item, в систему координат текущего элемента и возвращает отображённый многоугольник.

Если item является nullptr, эта функция возвращает то же самое, что и mapFromScene().

См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Система координат графического представления.

QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const

Преобразует путь path, заданный в системе координат элемента item, в систему координат этого элемента и возвращает преобразованный путь.

Если item является nullptr, эта функция возвращает то же, что и mapFromScene().

См. также itemTransform(), mapFromParent(), mapFromScene(), mapToItem() и Система координат виджета Graphics View.

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapFromItem(item, QPointF(x, y)).

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapFromItem(item, QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

QPointF QGraphicsItem::mapFromParent(const QPointF &point) const

Преобразует точку point, заданную в системе координат родительского элемента этого элемента, в систему координат этого элемента и возвращает преобразованную координату.

См. также mapFromItem(), mapFromScene(), transform(), mapToParent() и Система координат виджета Graphics View.

QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат родительского элемента этого элемента, в систему координат этого элемента и возвращает преобразованный прямоугольник в виде многоугольника.

См. также mapToParent(), mapFromItem(), transform() и Система координат виджета Graphics View.

QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const

Преобразует многоугольник polygon, заданный в системе координат родительского элемента этого элемента, в систему координат этого элемента и возвращает преобразованный многоугольник.

См. также mapToParent(), mapToItem(), transform() и Система координат виджета Graphics View.

QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const

Преобразует путь path, заданный в системе координат родительского элемента этого элемента, в систему координат этого элемента и возвращает преобразованный путь.

См. также mapFromScene(), mapFromItem(), mapToParent() и Система координат виджета Graphics View.

QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapFromParent(QPointF(x, y)).

QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapFromItem(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

QPointF QGraphicsItem::mapFromScene(const QPointF &point) const

Преобразует точку point, заданную в системе координат сцены, в систему координат этого элемента и возвращает преобразованную координату.

См. также mapFromItem(), mapFromParent(), transform(), mapToScene() и Система координат виджета Graphics View.

QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат сцены, в систему координат этого элемента и возвращает преобразованный прямоугольник в виде многоугольника.

См. также mapToScene(), mapFromItem(), transform() и Система координат виджета Graphics View.

QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const

Преобразует многоугольник polygon, заданный в системе координат сцены, в систему координат этого элемента и возвращает преобразованный многоугольник.

См. также mapToScene(), mapFromParent(), transform() и Система координат виджета Graphics View.

QPainterPath QGraphicsItem::mapFromScene(const QPainterPath &path) const

Преобразует путь path, заданный в системе координат сцены, в систему координат этого элемента и возвращает преобразованный путь.

См. также mapFromParent(), mapFromItem(), mapToScene() и Система координат виджета Graphics View.

QPointF QGraphicsItem::mapFromScene(qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapFromScene(QPointF(x, y)).

QPolygonF QGraphicsItem::mapFromScene(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapFromScene(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат элемента item, в систему координат этого элемента и возвращает преобразованный прямоугольник (т. е., прямоугольник, ограничивающий полученный многоугольник).

Если item является nullptr, эта функция возвращает то же, что и mapRectFromScene().

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectFromItem(item, QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат родительского элемента, в систему координат этого элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectFromParent(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в координатах сцены, в систему координат этого элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectFromScene(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).

Если item равен nullptr, эта функция возвращает то же самое, что и mapRectToScene().

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectToItem(item, QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат родительского элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectToParent(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат сцены и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).

Эта функция была добавлена в Qt 4.5.

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapRectToScene(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.5.

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const

Преобразует точку point, заданную в системе координат этого элемента, в систему координат элемента item и возвращает преобразованную координату.

Если item равен nullptr, эта функция возвращает то же самое, что и mapToScene().

См. также itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem(), и Систему координат виджета Graphics View.

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный прямоугольник в виде полигона.

Если item равен nullptr, эта функция возвращает то же самое, что и mapToScene().

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const

Преобразует полигон polygon, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный полигон.

Если item равен nullptr, эта функция возвращает то же самое, что и mapToScene().

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат виджета Graphics View.

QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const

Преобразует путь path, заданный в системе координат данного элемента, в систему координат элемента item и возвращает преобразованный путь.

Если item равен nullptr, эта функция возвращает то же, что и mapToScene().

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат Graphics View.

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapToItem(item, QPointF(x, y)).

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapToItem(item, QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

QPointF QGraphicsItem::mapToParent(const QPointF &point) const

Преобразует точку point, заданную в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованные координаты. Если у элемента нет родителя, point преобразуется в систему координат сцены.

См. также mapToItem(), mapToScene(), transform(), mapFromParent() и Система координат Graphics View.

QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный прямоугольник в виде многоугольника. Если у элемента нет родителя, rect преобразуется в систему координат сцены.

См. также mapToScene(), mapToItem(), mapFromParent() и Система координат Graphics View.

QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const

Преобразует многоугольник polygon, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный многоугольник. Если у элемента нет родителя, polygon преобразуется в систему координат сцены.

См. также mapToScene(), mapToItem(), mapFromParent() и Система координат Graphics View.

QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const

Преобразует путь path, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный путь. Если у элемента нет родителя, path преобразуется в систему координат сцены.

См. также mapToScene(), mapToItem(), mapFromParent() и Система координат Graphics View.

QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapToParent(QPointF(x, y)).

QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapToParent(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

QPointF QGraphicsItem::mapToScene(const QPointF &point) const

Преобразует точку point, заданную в системе координат данного элемента, в систему координат сцены и возвращает преобразованную координату.

См. также mapToItem(), mapToParent(), transform(), mapFromScene() и Система координат Graphics View.

QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const

Преобразует прямоугольник rect, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный прямоугольник в виде многоугольника.

См. также mapToParent(), mapToItem(), mapFromScene() и Система координат Graphics View.

QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const

Преобразует многоугольник polygon, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный многоугольник.

См. также mapToParent(), mapToItem(), mapFromScene() и Система координат Graphics View.

QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const

Преобразует путь path, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный путь.

См. также mapToParent(), mapToItem(), mapFromScene() и Система координат Graphics View.

QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову mapToScene(QPointF(x, y)).

QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const

Эта вспомогательная функция эквивалентна вызову mapToScene(QRectF(x, y, w, h)).

Эта функция была добавлена в Qt 4.3.

[virtual protected] void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)

Обработчик событий, для события event, может быть переопределён для получения событий двойного щелчка мышью для данного элемента.

При двойном щелчке по элементу элемент сначала получит событие нажатия мыши, затем событие отпускания (т.е. щелчок), затем событие двойного щелчка и, наконец, событие отпускания.

Вызов QEvent::ignore() или QEvent::accept() на event не оказывает никакого влияния.

В реализации по умолчанию вызывается mousePressEvent(). Если при переопределении этой функции требуется сохранить базовую реализацию, вызовите QGraphicsItem::mouseDoubleClickEvent() в вашей реализации.

Обратите внимание, что элемент не будет получать события двойного щелчка, если он не является ни выбираемым, ни перемещаемым (в этом случае одиночные щелчки игнорируются, что останавливает генерацию двойных щелчков).

См. также mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и sceneEvent().

[virtual protected] void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

Обработчик событий, для события event, может быть переопределён для получения событий перемещения мыши для данного элемента. Если вы получаете это событие, вы можете быть уверены, что этот элемент также получил событие нажатия мыши, и что этот элемент является текущим захватом мыши.

Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.

По умолчанию реализация обрабатывает базовое взаимодействие с элементом, такое как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseMoveEvent() в вашей реализации.

Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. См. описание mousePressEvent() для получения подробностей.

См. также mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().

[virtual protected] void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)

Этот обработчик событий, для события event, может быть переопределён, чтобы получать события нажатия мыши для этого элемента. События нажатия мыши доставляются только элементам, которые принимают нажатую кнопку мыши. По умолчанию элемент принимает все кнопки мыши, но вы можете изменить это, вызвав setAcceptedMouseButtons().

Событие нажатия мыши определяет, какой элемент должен стать захватом мыши (см. QGraphicsScene::mouseGrabberItem()). Если вы не переопределяете эту функцию, событие нажатия будет распространено на любой верхний элемент под этим элементом, и никакие другие события мыши не будут доставлены этому элементу.

Если вы переопределяете эту функцию, event по умолчанию будет принят (см. QEvent::accept()), и этот элемент станет захватом мыши. Это позволяет элементу получать будущие события перемещения, отпускания и двойного щелчка. Если вы вызовете QEvent::ignore() для event, этот элемент потеряет захват мыши, и event будет распространён на любой верхний элемент под ним. Дальнейшие события мыши не будут доставлены этому элементу, если не будет получено новое событие нажатия мыши.

По умолчанию реализация обрабатывает базовое взаимодействие с элементом, такое как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mousePressEvent() в вашей реализации.

Событие игнорируется (QEvent::ignore()) для элементов, которые не являются перемещаемыми или выделяемыми.

См. также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().

[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)

Этот обработчик событий, для события event, может быть переопределён для получения событий отпускания мыши для этого элемента.

Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.

По умолчанию реализация обрабатывает базовое взаимодействие с элементом, такое как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseReleaseEvent() в вашей реализации.

Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. См. описание mousePressEvent() для получения подробностей.

См. также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().

void QGraphicsItem::moveBy(qreal dx, qreal dy)

Перемещает элемент на dx пунктов по горизонтали и dy пунктов по вертикали. Эта функция эквивалентна вызову setPos(pos() + QPointF(dx, dy)).

qreal QGraphicsItem::opacity() const

Возвращает локальную непрозрачность этого элемента, которая находится в диапазоне от 0,0 (прозрачный) до 1,0 (непрозрачный). Это значение комбинируется с родительскими и предковыми значениями в effectiveOpacity(). Эффективная непрозрачность определяет, как элемент отрисовывается, а также влияет на его видимость при запросе такими функциями, как QGraphicsView::items().

Свойство непрозрачности определяет состояние кисти, переданной функции paint(). Если элемент кэшируется, т.е. ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отрисовке.

По умолчанию непрозрачность равна 1,0; полностью непрозрачный.

Функция была введена в Qt 4.5.

См. также setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.

[virtual] QPainterPath QGraphicsItem::opaqueArea() const

Эта виртуальная функция возвращает форму, представляющую область, где этот элемент непрозрачен. Область непрозрачна, если она заполнена непрозрачной кистью или цветом (т.е. не прозрачной).

Эта функция используется функцией isObscuredBy(), которая вызывается подлежащими элементами, чтобы определить, скрыт ли этот элемент этим элементом.

По умолчанию реализация возвращает пустой QPainterPath, указывая, что этот элемент полностью прозрачен и не скрывает другие элементы.

См. также isObscuredBy(), isObscured() и shape().

[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...)

Эта функция, обычно вызываемая 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, половина контура будет нарисована снаружи, а половина внутри формы, которую вы рисуете (например, при ширине пера 2 единицы, вы должны рисовать контуры на 1 единицу внутри boundingRect()). QGraphicsItem не поддерживает использование декоративных перьев с ненулевой шириной.

Вся отрисовка выполняется в локальных координатах.

Примечание: Элемент должен всегда перерисовывать себя точно так же, если не был вызван update(), иначе могут возникнуть визуальные артефакты. Другими словами, два последующих вызова paint() должны всегда генерировать один и тот же результат, если между ними не был вызван update().

Примечание: Включение кеширования для элемента не гарантирует, что paint() будет вызван только один раз механизмом Graphics View, даже без явного вызова update(). См. документацию setCacheMode() для получения более подробной информации.

См. также setCacheMode(), QPen::width(), Координаты элементов и ItemUsesExtendedStyleOption.

QGraphicsItem *QGraphicsItem::panel() const

Возвращает панель элемента или nullptr если у этого элемента нет панели. Если элемент является панелью, он вернёт себя. В противном случае он вернёт самого ближайшего предка, который является панелью.

Функция была введена в Qt 4.6.

См. также isPanel() и ItemIsPanel.

QGraphicsItem::PanelModality QGraphicsItem::panelModality() const

Возвращает режим для этого элемента.

Функция была введена в Qt 4.6.

См. также setPanelModality().

QGraphicsItem *QGraphicsItem::parentItem() const

Возвращает указатель на родительский элемент данного элемента. Если у данного элемента нет родителя, возвращается nullptr.

См. также setParentItem() и childItems().

QGraphicsObject *QGraphicsItem::parentObject() const

Возвращает указатель на родительский элемент, преобразованный к типу QGraphicsObject. Возвращает nullptr если родительский элемент не является QGraphicsObject.

Данная функция была добавлена в Qt 4.6.

См. также parentItem() и childItems().

QGraphicsWidget *QGraphicsItem::parentWidget() const

Возвращает указатель на родительский виджет элемента. Родительский виджет элемента — это ближайший родительский элемент, являющийся виджетом.

Данная функция была добавлена в Qt 4.4.

См. также parentItem() и childItems().

QPointF QGraphicsItem::pos() const

Возвращает положение элемента в координатах родителя. Если у элемента нет родителя, его положение задаётся в координатах сцены.

Положение элемента описывает его начало (локальные координаты (0, 0)) в координатах родителя; эта функция возвращает то же, что и mapToParent(0, 0).

Для удобства также можно вызвать scenePos() для определения положения элемента в координатах сцены независимо от его родителя.

См. также x(), y(), setPos(), transform(), и Система координат графического представления.

[protected] void QGraphicsItem::prepareGeometryChange()

Подготавливает элемент к изменению геометрии. Вызывайте эту функцию перед изменением прямоугольника ограничивающей области элемента, чтобы сохранить актуальность индекса QGraphicsScene.

prepareGeometryChange() вызовет update(), если это необходимо.

Пример:

void CircleItem::setRadius(qreal newRadius)
{
    if (radius != newRadius) {
        prepareGeometryChange();
        radius = newRadius;
    }
}

См. также boundingRect().

void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)

Удаляет фильтр событий для этого элемента из filterItem.

См. также installSceneEventFilter().

void QGraphicsItem::resetTransform()

Сбрасывает матрицу преобразования данного элемента до единичной матрицы или все свойства преобразования до значений по умолчанию. Это эквивалентно вызову setTransform(QTransform()).

Данная функция была добавлена в Qt 4.3.

См. также setTransform() и transform().

qreal QGraphicsItem::rotation() const

Возвращает значение поворота по часовой стрелке в градусах вокруг оси Z. Значение по умолчанию — 0 (то есть элемент не повернут).

Поворот комбинируется с масштабированием элемента scale(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента в родительском элементе.

Данная функция была добавлена в Qt 4.6.

См. также setRotation(), transformOriginPoint(), и Преобразования.

qreal QGraphicsItem::scale() const

Возвращает коэффициент масштабирования элемента. Значение по умолчанию — 1.0 (то есть элемент не масштабируется).

Масштабирование комбинируется с поворотом элемента rotation(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента в родительском элементе.

Данная функция была добавлена в Qt 4.6.

См. также setScale(), rotation() и Преобразования.

QGraphicsScene *QGraphicsItem::scene() const

Возвращает текущую сцену для элемента или nullptr если элемент не хранится в сцене.

Для добавления или перемещения элемента в сцену, вызовите QGraphicsScene::addItem().

QRectF QGraphicsItem::sceneBoundingRect() const

Возвращает ограничивающий прямоугольник этого элемента в координатах сцены, комбинируя sceneTransform() с boundingRect().

См. также boundingRect() и Система координат графического представления.

[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)

Эта виртуальная функция получает события для данного элемента. Переопределите эту функцию, чтобы перехватить события перед их передачей в специализированные обработчики событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().

Возвращает true если событие было распознано и обработано; в противном случае (например, если тип события не был распознан) возвращается false.

event — перехваченное событие.

[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)

Фильтрует события для элемента watched. event — отфильтрованное событие.

Переопределение этой функции в подклассе позволяет элементу использоваться в качестве фильтра событий для других элементов, перехватывая все события, отправленные этим элементам, прежде чем они смогут на них ответить.

Переопределения должны возвращать true, чтобы предотвратить дальнейшую обработку данного события, гарантируя, что оно не будет доставлено наблюдаемому элементу, или возвращать false, чтобы указать, что событие должно быть распространено далее системой событий.

См. также installSceneEventFilter().

QPointF QGraphicsItem::scenePos() const

Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).

См. также pos(), sceneTransform(), и Система координат графического представления.

QTransform QGraphicsItem::sceneTransform() const

Возвращает матрицу преобразования сцены для этого элемента. Эта матрица может использоваться для отображения координат и геометрических фигур из локальной системы координат этого элемента в систему координат сцены. Для отображения координат из сцены необходимо сначала инвертировать возвращённую матрицу.

Пример:

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.sceneTransform().map(QPointF(0, 0));
// returns QPointF(100, 100);

rect.sceneTransform().inverted().map(QPointF(100, 100));
// returns QPointF(0, 0);

В отличие от transform(), которая возвращает только локальное преобразование элемента, эта функция включает положение элемента (и любых его родителей) и все свойства преобразований.

Данная функция была добавлена в Qt 4.3.

См. также transform(), setTransform(), scenePos(), Система координат графического представления и Преобразования.

void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())

Прокручивает содержимое rect на dx, dy. Если rect — пустой прямоугольник (значение по умолчанию), прокручивается ограничивающий прямоугольник элемента.

Прокрутка обеспечивает быструю альтернативу простому перерисовыванию, когда содержимое элемента (или части элемента) сдвигается вертикально или горизонтально. В зависимости от текущего преобразования и возможностей устройства рисования (например, области просмотра) эта операция может состоять из простого перемещения пикселей из одного места в другое с помощью memmove(). В большинстве случаев это быстрее, чем перерисовывание всей области.

После прокрутки элемент выдаст обновление для вновь открытых областей. Если прокрутка не поддерживается (например, вы рисуете в области просмотра OpenGL, которая не выигрывает от оптимизаций прокрутки), эта функция эквивалентна вызову update(rect).

Примечание: Прокрутка поддерживается только при включенном QGraphicsItem::ItemCoordinateCache; во всех остальных случаях вызов этой функции эквивалентен вызову update(rect). Если вы точно знаете, что элемент непрозрачен и не перекрывается другими элементами, вы можете отобразить rect в координатах области просмотра и прокрутить область просмотра.

QTransform xform = item->deviceTransform(view->viewportTransform());
QRect deviceRect = xform.mapRect(rect).toAlignedRect();
view->viewport()->scroll(dx, dy, deviceRect);

Данная функция была добавлена в Qt 4.4.

См. также boundingRect().

void QGraphicsItem::setAcceptDrops(bool on)

Если on имеет значение true, этот элемент будет принимать события перетаскивания; в противном случае, он будет прозрачен для событий перетаскивания. По умолчанию элементы не принимают события перетаскивания.

См. также acceptDrops().

void QGraphicsItem::setAcceptHoverEvents(bool enabled)

Если enabled имеет значение true, этот элемент будет принимать события наведения курсора; в противном случае, он будет их игнорировать. По умолчанию элементы не принимают события наведения курсора.

События наведения курсора доставляются, когда нет текущего элемента-захватчика мыши. Они отправляются, когда курсор мыши входит в элемент, когда он перемещается внутри элемента и когда курсор покидает элемент. События наведения курсора обычно используются для выделения элемента при его входе и для отслеживания курсора мыши при наведении на элемент (эквивалентно QWidget::mouseTracking).

Родительские элементы получают события входа наведения курсора до своих дочерних элементов, а события выхода — после своих дочерних элементов. Однако родительский элемент не получает события выхода наведения курсора, если курсор входит в дочерний элемент; родительский элемент остается «наведенным» до тех пор, пока курсор не покинет его область, включая области его дочерних элементов.

Если родительский элемент обрабатывает события дочерних элементов, он будет получать события перемещения наведения курсора, перемещения перетаскивания и события放下, когда курсор проходит через его дочерние элементы, но он не получает события входа наведения курсора и выхода наведения курсора, а также события входа перетаскивания и выхода перетаскивания от имени своих дочерних элементов.

QGraphicsWidget с декорациями окна будет принимать события наведения курсора независимо от значения acceptHoverEvents().

Данная функция была введена в Qt 4.4.

См. также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().

void QGraphicsItem::setAcceptTouchEvents(bool enabled)

Если enabled имеет значение true, этот элемент будет принимать события касания; в противном случае, он будет их игнорировать. По умолчанию элементы не принимают события касания.

Данная функция была введена в Qt 4.6.

См. также acceptTouchEvents().

void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)

Устанавливает кнопки мыши buttons, для которых этот элемент принимает события мыши.

По умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он станет элементом захвата мыши при доставке события нажатия мыши для этой кнопки. Однако, если элемент не принимает кнопку мыши, QGraphicsScene передаст события мыши первому элементу под ним, который это делает.

Чтобы отключить события мыши для элемента (то есть сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).

См. также acceptedMouseButtons() и mousePressEvent().

void QGraphicsItem::setActive(bool active)

Если active имеет значение true и сцена активна, панель этого элемента будет активирована. В противном случае панель деактивируется.

Если элемент не является частью активной сцены, active определит, что произойдет с панелью, когда сцена станет активной или элемент будет добавлен в сцену. Если значение true, панель элемента будет активирована, когда элемент будет добавлен в сцену или сцена будет активирована. В противном случае элемент останется неактивным независимо от состояния активности сцены.

Данная функция была введена в Qt 4.6.

См. также isPanel(), QGraphicsScene::setActivePanel() и QGraphicsScene::isActive().

void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)

Устанавливает точность области границы до granularity; значение от 0 до 1 включительно. Значение по умолчанию равно 0 (т.е. наименьшая точность, где область границы соответствует прямоугольнику границы элемента).

Точность используется функцией boundingRegion() для расчета того, насколько точной должна быть область границы элемента. Максимально достижимая точность — 1, где boundingRegion() вернет наилучший контур, возможный для соответствующего устройства (например, для области просмотра QGraphicsView это даёт вам область границы с точностью до пикселя). Минимально возможная точность — 0. Значение granularity описывает отношение между разрешением устройства и разрешением области границы (например, значение 0,25 обеспечит область, где каждый фрагмент соответствует 4x4 единицам/пикселям устройства).

Данная функция была введена в Qt 4.4.

См. также boundingRegionGranularity().

void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())

Устанавливает режим кэширования элемента в mode.

Необязательный аргумент logicalCacheSize используется только для режима ItemCoordinateCache и описывает разрешение буфера кэша; если logicalCacheSize равно (100, 100), QGraphicsItem поместит элемент в 100x100 пикселей в графической памяти, независимо от логического размера самого элемента. По умолчанию QGraphicsItem использует размер boundingRect(). Для всех режимов кэширования, кроме ItemCoordinateCache, logicalCacheSize игнорируется.

Кэширование может ускорить отрисовку, если ваш элемент тратит значительное время на перерисовку. В некоторых случаях кэш может также замедлить отрисовку, особенно когда элемент тратит меньше времени на перерисовку, чем QGraphicsItem тратит на перерисовку из кэша.

При включенном кэшировании функция paint() элемента обычно рисует в кэшированную пиксель карту вне экрана; для любых последующих запросов перерисовки фреймворк Graphics View перерисует из кэша. Этот подход особенно хорошо работает с QGLWidget, который хранит весь кэш в качестве текстур OpenGL.

Обратите внимание, что может потребоваться изменить предел кэша QPixmapCache для достижения оптимальной производительности.

Вы можете узнать больше о различных режимах кэширования в документации CacheMode.

Примечание: Включение кэширования не подразумевает, что функция paint() элемента будет вызываться только в ответ на явный вызов update(). Например, при недостатке памяти Qt может решить сбросить некоторые данные кэша; в таких случаях функция paint() элемента будет вызвана, даже если не было вызова update() (то есть точно так же, как если бы кэширование не было включено).

Данная функция была введена в Qt 4.4.

См. также cacheMode(), CacheMode и QPixmapCache::setCacheLimit().

void QGraphicsItem::setCursor(const QCursor &cursor)

Устанавливает текущую форму курсора для элемента на cursor. Курсор мыши примет эту форму, когда он окажется над этим элементом. См. список предопределенных объектов курсора для ряда полезных форм.

Элемент редактора может использовать курсор в форме лупы:

item->setCursor(Qt::IBeamCursor);

Если курсор не был установлен, используется курсор элемента под ним.

См. также cursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().

void QGraphicsItem::setData(int key, const QVariant &value)

Устанавливает пользовательские данные этого элемента для ключа key в значение value.

Пользовательские данные элемента полезны для хранения произвольных свойств любого элемента. Qt не использует эту функцию для хранения данных; она предоставляется исключительно для удобства пользователя.

См. также data().

void QGraphicsItem::setEnabled(bool enabled)

Если enabled имеет значение true, элемент включён; в противном случае, он отключён.

Отключенные элементы видны, но они не получают никаких событий, не могут получить фокус и не могут быть выбраны. События мыши игнорируются; они не распространяются, если элемент также невидим или если он не принимает событий мыши (см. acceptedMouseButtons()). Отключённый элемент не может стать захватом мыши, и в результате этого, элемент теряет захват, если он становится отключённым, когда захватывает мышь, точно так же, как он теряет фокус, если у него был фокус, когда он был отключён.

Отключенные элементы традиционно рисуются с использованием серых цветов (см. QPalette::Disabled).

Если вы отключаете родительский элемент, все его дочерние элементы также будут отключены. Если вы включаете родительский элемент, все дочерние элементы будут включены, если они не были явно отключены (т.е. если вы вызываете setEnabled(false) для дочернего элемента, он не будет повторно включён, если его родитель был отключён, а затем снова включён).

Элементы включены по умолчанию.

Примечание: Если вы устанавливаете обработчик событий, вы всё ещё можете перехватывать события до их доставки элементам; этот механизм игнорирует состояние включения элемента.

См. также isEnabled().

void QGraphicsItem::setFiltersChildEvents(bool enabled)

Если enabled имеет значение true, этот элемент настроен на фильтрацию всех событий для всех его дочерних элементов (то есть все события, предназначенные для любого из его дочерних элементов, вместо этого отправляются этому элементу); в противном случае, если enabled имеет значение false, этот элемент будет обрабатывать только свои собственные события. Значение по умолчанию — false.

Данная функция была введена в Qt 4.6.

END_OF_DOCUMENT_MARKER

См. также filtersChildEvents().

void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)

Если enabled равно true, то флаг элемента flag разрешён; в противном случае — запрещён.

См. также flags() и setFlags().

void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)

Устанавливает флаги элемента на flags. Все флаги в flags разрешаются; все флаги, отсутствующие в flags, запрещаются.

Если элемент имел фокус и flags не включает ItemIsFocusable, элемент теряет фокус в результате вызова этой функции. Аналогично, если элемент был выбран, а flags не включает ItemIsSelectable, элемент автоматически отменяется.

По умолчанию флаги не включены. (QGraphicsWidget включает флаг ItemSendsGeometryChanges по умолчанию для отслеживания изменений позиции.)

См. также flags() и setFlag().

void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)

Передаёт фокус ввода с клавиатуры этому элементу. Аргумент focusReason будет передан в любой событие фокуса, сгенерированное этой функцией; он используется для объяснения причины, по которой элемент получил фокус.

Только включённые элементы, установившие флаг ItemIsFocusable, могут принимать фокус клавиатуры.

Если этот элемент не виден, не активен или не связан со сценой, он немедленно не получит фокус ввода. Однако он будет зарегистрирован как предпочтительный элемент фокуса для своего поддерева элементов, если он позже станет видимым.

В результате вызова этой функции этот элемент получит событие focus in event с focusReason. Если другой элемент уже имеет фокус, этот элемент сначала получит событие focus out event, указывающее, что он потерял фокус ввода.

См. также clearFocus(), hasFocus(), focusItem() и focusProxy().

void QGraphicsItem::setFocusProxy(QGraphicsItem *item)

Устанавливает прокси фокуса элемента на item.

Если у элемента есть прокси фокуса, прокси фокуса получит фокус ввода, когда элемент получает фокус ввода. Сам элемент по-прежнему будет иметь фокус (т. е., hasFocus() вернёт true), но только прокси фокуса получит ввод с клавиатуры.

Прокси фокуса может сам иметь прокси фокуса, и так далее. В этом случае ввод с клавиатуры будет обрабатываться самым внешним прокси фокуса.

Прокси фокуса item должен принадлежать той же сцене, что и этот элемент.

Эта функция была добавлена в Qt 4.6.

См. также focusProxy(), setFocus() и hasFocus().

void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)

Устанавливает effect в качестве эффекта элемента. Если на этом элементе уже установлен эффект, QGraphicsItem удалит существующий эффект перед установкой нового effect. Вы можете удалить существующий эффект, вызвав setGraphicsEffect(nullptr).

Если effect является установленным эффектом на другом элементе, setGraphicsEffect() удалит эффект с элемента и установит его на этот элемент.

QGraphicsItem берёт на себя владение effect.

Примечание: Эта функция применит эффект к самому элементу и всем его дочерним элементам.

Эта функция была добавлена в Qt 4.6.

См. также graphicsEffect().

void QGraphicsItem::setGroup(QGraphicsItemGroup *group)

Добавляет этот элемент в группу элементов group. Если group равен nullptr, этот элемент удаляется из любой текущей группы и добавляется как дочерний элемент предыдущего родительского элемента.

См. также group() и QGraphicsScene::createItemGroup().

void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)

Устанавливает текущие подсказки метода ввода этого элемента на hints.

Эта функция была добавлена в Qt 4.6.

См. также inputMethodHints() и inputMethodQuery().

void QGraphicsItem::setOpacity(qreal opacity)

Устанавливает локальную opacity этого элемента, значение от 0.0 (прозрачный) до 1.0 (непрозрачный). Локальная opacity элемента комбинируется с родительскими и предковыми значениями opacity в effectiveOpacity().

По умолчанию непрозрачность передаётся от родителя к ребёнку, поэтому если непрозрачность родителя составляет 0,5, а ребёнка — тоже 0,5, эффективная непрозрачность ребёнка будет 0,25.

Свойство opacity определяет состояние графического контекста, переданного функции paint(). Если элемент кэшируется, т. е. ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отрисовке.

Существуют два флага элемента, которые влияют на то, как непрозрачность элемента комбинируется с родительской: ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.

Примечание: Установка opacity элемента в 0 не сделает элемент невидимым (согласно isVisible()), но элемент будет обрабатываться как невидимый. См. документацию setVisible() для получения дополнительной информации.

Эта функция была добавлена в Qt 4.5.

См. также opacity(), effectiveOpacity() и setVisible().

void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)

Устанавливает модальный режим этого элемента на panelModality.

Изменение модальности видимого элемента вступает в силу немедленно.

Эта функция была добавлена в Qt 4.6.

См. также panelModality().

void QGraphicsItem::setParentItem(QGraphicsItem *newParent)

Устанавливает родительский элемент этого элемента на newParent. Если у этого элемента уже есть родитель, он сначала удаляется из предыдущего родителя. Если newParent равен 0, этот элемент станет верхним.

Обратите внимание, что это неявно добавляет этот графический элемент в сцену родителя. Не нужно добавлять элемент в сцену самостоятельно.

Поведение при вызове этой функции для элемента, являющегося предком newParent, не определено.

См. также parentItem() и childItems().

void QGraphicsItem::setPos(const QPointF &pos)

Устанавливает позицию элемента на pos, которая задана в родительских координатах. Для элементов без родителя pos задаётся в координатах сцены.

Позиция элемента описывает его начало (локальная координата (0, 0)) в родительских координатах.

См. также pos(), scenePos() и Систему координат виджетов Graphics View.

void QGraphicsItem::setPos(qreal x, qreal y)

Это перегруженная функция.

Эта вспомогательная функция эквивалентна вызову setPos(QPointF(x, y)).

void QGraphicsItem::setRotation(qreal angle)

Устанавливает поворот по часовой стрелке angle, в градусах, вокруг оси Z. Значение по умолчанию равно 0 (т. е., элемент не повернут). Присвоение отрицательного значения повернёт элемент против часовой стрелки. Обычно угол поворота находится в диапазоне (-360, 360), но также можно задать значения вне этого диапазона (например, поворот на 370 градусов эквивалентен повороту на 10 градусов).

Элемент поворачивается вокруг точки начала преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другую точку начала преобразования, вызвав setTransformOriginPoint().

Поворот комбинируется с масштабированием элемента, scale(), transform() и transformations(), для отображения системы координат элемента в родительский элемент.

Эта функция была добавлена в Qt 4.6.

См. также rotation(), setTransformOriginPoint() и Преобразования.

void QGraphicsItem::setScale(qreal factor)

Устанавливает масштабирующий фактор элемента. Значение масштабирующего фактора по умолчанию равно 1,0 (т.е., элемент не масштабируется). Значение масштабирующего фактора 0,0 приведет к коллапсу элемента до единственной точки. Если вы укажете отрицательный масштабирующий фактор, элемент будет перевернут и зеркально отображён (т.е., повернут на 180 градусов).

Масштабирование элемента происходит относительно точки начала преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другую точку начала преобразования, вызвав setTransformOriginPoint().

Масштабирование комбинируется с поворотом(), преобразованием() и преобразованиями() элемента для отображения системы координат элемента в родительском элементе.

Эта функция была введена в Qt 4.6.

См. также scale(), setTransformOriginPoint() и Пример преобразований.

void QGraphicsItem::setSelected(bool selected)

Если selected равно true и элемент допускает выделение, этот элемент будет выделен; в противном случае, он будет снят с выделения.

Если элемент находится в группе, состояние выделения всей группы изменяется этой функцией. Если группа выделена, все элементы в группе также будут выделены, а если группа не выделена, ни один элемент в группе не будет выделен.

Выделению могут быть подвергнуты только видимые, активные и разрешающие выделение элементы. Если selected равно true, а элемент невидим, отключен или не допускает выделение, эта функция ничего не делает.

По умолчанию элементы не могут быть выделены. Чтобы разрешить выделение, установите флаг ItemIsSelectable.

Эта функция предназначена для удобства, позволяя индивидуально изменять состояние выделения элемента. Однако более распространённый способ выбора элементов — это вызов QGraphicsScene::setSelectionArea(), который вызовет эту функцию для всех видимых, активных и разрешающих выделение элементов в заданной области на сцене.

См. также isSelected() и QGraphicsScene::selectedItems().

void QGraphicsItem::setToolTip(const QString &toolTip)

Устанавливает подсказку элемента на toolTip. Если toolTip пустая, подсказка элемента очищается.

См. также toolTip() и QToolTip.

void QGraphicsItem::setTransform(const QTransform &matrix, bool combine = false)

Устанавливает текущую матрицу преобразования элемента на matrix.

Если combine равно true, то matrix комбинируется с текущей матрицей; в противном случае, matrix заменяет текущую матрицу. По умолчанию combine равно false.

Для упрощения взаимодействия с элементами, использующими преобразованный вид, QGraphicsItem предоставляет функции mapTo... и mapFrom..., которые могут преобразовывать координаты элементов и сцены. Например, вы можете вызвать mapToScene() для преобразования координаты элемента в координату сцены или mapFromScene() для преобразования из координат сцены в координаты элемента.

Матрица преобразования комбинируется с поворотом элемента rotation(), масштабированием scale() и преобразованиями transformations() в объединённое преобразование, отображающее систему координат элемента в родительский элемент.

Эта функция была введена в Qt 4.3.

См. также transform(), setRotation(), setScale(), setTransformOriginPoint(), Система координат виджета Graphics View и Преобразования.

void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)

Устанавливает точку origin для преобразования в координатах элемента.

Эта функция была введена в Qt 4.6.

См. также transformOriginPoint() и Преобразования.

void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)

Это перегруженная функция.

Устанавливает точку начала преобразования в координатах элемента. Это эквивалентно вызову setTransformOriginPoint(QPointF(x, y)).

Эта функция была введена в Qt 4.6.

См. также setTransformOriginPoint() и Преобразования.

void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)

Устанавливает список графических преобразований (QGraphicsTransform), которые в настоящее время применяются к этому элементу.

Если вам нужно только повернуть или масштабировать элемент, вы должны вызвать setRotation() или setScale() вместо этого. Если вам нужно установить произвольное преобразование элемента, вы можете вызвать setTransform().

QGraphicsTransform предназначен для применения и управления цепочкой отдельных операций преобразования над элементом. Это особенно полезно при анимациях, где каждая операция преобразования должна интерполироваться независимо или по-разному.

Преобразования комбинируются с поворотом элемента rotation(), масштабированием scale() и преобразованием transform() для отображения системы координат элемента в родительском элементе.

Эта функция была введена в Qt 4.6.

См. также transformations(), scale(), setTransformOriginPoint(), и Преобразования.

void QGraphicsItem::setVisible(bool visible)

Если visible равно true, элемент становится видимым. В противном случае, элемент становится невидимым. Невидимые элементы не рисуются и не получают никаких событий. В частности, события мыши проходят сквозь невидимые элементы и доставляются любому элементу, который может находиться под ними. Невидимые элементы также не могут быть выделены, не могут получить фокус и не обнаруживаются функциями определения местоположения элемента QGraphicsScene.

Если элемент становится невидимым во время захвата мыши (т.е., когда он получает события мыши), он автоматически потеряет захват мыши, и захват не будет восстановлен повторным отображением элемента; для получения захвата мыши требуется новое нажатие мыши.

Аналогично, невидимый элемент не может иметь фокус, поэтому если элемент имеет фокус, когда он становится невидимым, он потеряет фокус, и фокус не восстанавливается просто отображением элемента.

Если вы скрываете родительский элемент, все его дочерние элементы также будут скрыты. Если вы отображаете родительский элемент, все дочерние элементы будут отображены, если они не были явно скрыты (т.е., если вы вызовите setVisible(false) для дочернего элемента, он не будет повторно отображен, даже если его родительский элемент будет скрыт и затем снова отображен).

Элементы видимы по умолчанию; вызов setVisible() для нового элемента не требуется.

Примечание: элемент с непрозрачностью, установленной в 0, по-прежнему считается видимым, хотя он будет обрабатываться как невидимый элемент: события мыши пройдут сквозь него, он не будет включён в список элементов, возвращаемых функцией QGraphicsView::items(), и т.д. Однако элемент сохранит фокус.

См. также isVisible(), show(), hide(), и setOpacity().

void QGraphicsItem::setX(qreal x)

Устанавливает x-координату положения элемента. Эквивалентно вызову setPos(x, y()).

Эта функция была введена в Qt 4.6.

См. также x() и setPos().

void QGraphicsItem::setY(qreal y)

Устанавливает y-координату положения элемента. Эквивалентно вызову setPos(x(), y).

Эта функция была введена в Qt 4.6.

См. также y(), x(), и setPos().

void QGraphicsItem::setZValue(qreal z)

Устанавливает значение Z элемента на z. Значение Z определяет порядок следования элементов-«соседей». Элемент-«сосед» с большим значением Z всегда будет отображаться поверх другого элемента-«соседа» с меньшим значением Z.

Если вы восстановите значение Z, порядок вставки элемента будет определять порядок отображения.

Значение Z не влияет на размер элемента.

Значение Z по умолчанию равно 0.

См. также zValue(), Сортировка, stackBefore(), и ItemStacksBehindParent.

QPainterPath QGraphicsItem::shape() const

Возвращает форму этого элемента в виде QPainterPath в локальных координатах. Форма используется для многих целей, включая обнаружение столкновений, проверки попадания и для функций QGraphicsScene::items().

Реализация по умолчанию вызывает boundingRect() для возвращения простого прямоугольного фигуры, но подклассы могут переопределить эту функцию, чтобы вернуть более точную фигуру для фигур, отличных от прямоугольных. Например, круглая фигура может выбрать возвращение эллиптической фигуры для лучшего обнаружения столкновений. Например:

QPainterPath RoundItem::shape() const
{
    QPainterPath path;
    path.addEllipse(boundingRect());
    return path;
}

Контур фигуры может изменяться в зависимости от ширины и стиля пера, используемого при рисовании. Если вы хотите включить этот контур в фигуру элемента, вы можете создать фигуру из обводки с помощью QPainterPathStroker.

Эта функция вызывается реализациями по умолчанию для contains() и collidesWithPath().

См. также boundingRect(), contains(), prepareGeometryChange() и QPainterPathStroker.

void QGraphicsItem::show()

Отображает элемент (элементы отображаются по умолчанию).

Эта функция удобства эквивалентна вызову setVisible(true).

См. также hide() и setVisible().

void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)

Размещает этот элемент перед элементом sibling, который должен быть элементом-близнецом (то есть два элемента должны иметь одного и того же родительского элемента или оба должны быть верхнеуровневыми элементами). Элемент sibling должен иметь такое же значение Z, как и этот элемент, в противном случае вызов этой функции не окажет никакого эффекта.

По умолчанию все элементы-близнецы упорядочиваются по порядку вставки (то есть первый добавленный элемент рисуется перед последующим добавленным элементом). Если значения Z двух элементов разные, то элемент с наибольшим значением Z рисуется поверх. Когда значения Z одинаковы, порядок вставки определяет порядок размещения.

Эта функция была представлена в Qt 4.6.

См. также setZValue(), ItemStacksBehindParent и Сортировка.

QGraphicsObject *QGraphicsItem::toGraphicsObject()

Возвращает элемент графического элемента, преобразованный в QGraphicsObject, если класс на самом деле является графическим объектом, в противном случае 0.

Эта функция была представлена в Qt 4.6.

const QGraphicsObject *QGraphicsItem::toGraphicsObject() const

Возвращает элемент графического элемента, преобразованный в QGraphicsObject, если класс на самом деле является графическим объектом, в противном случае 0.

Эта функция была представлена в Qt 4.6.

QString QGraphicsItem::toolTip() const

Возвращает подсказку элемента или пустой QString, если подсказка не была задана.

См. также setToolTip() и QToolTip.

QGraphicsItem *QGraphicsItem::topLevelItem() const

Возвращает верхнеуровневый элемент этого элемента. Верхнеуровневым элементом является самый верхний родительский элемент, родительским элементом которого является nullptr. Если у элемента нет родителя, возвращается указатель на сам элемент (то есть верхнеуровневый элемент - это сам элемент).

См. также parentItem().

QGraphicsWidget *QGraphicsItem::topLevelWidget() const

Возвращает указатель на верхний уровень виджета элемента (то есть родительский элемент, родительским элементом которого является nullptr, или родительским элементом которого не является виджет), или nullptr если у этого элемента нет виджета верхнего уровня. Если элемент является собственным виджетом верхнего уровня, эта функция возвращает указатель на сам элемент.

Эта функция была представлена в Qt 4.4.

QTransform QGraphicsItem::transform() const

Возвращает матрицу преобразования этого элемента.

Матрица преобразования комбинируется с rotation(), scale() и transformations() элемента в комбинированную трансформацию для элемента.

Матрица преобразования по умолчанию - единичная матрица.

Эта функция была представлена в Qt 4.3.

См. также setTransform() и sceneTransform().

QPointF QGraphicsItem::transformOriginPoint() const

Возвращает точку начала преобразования в координатах элемента.

По умолчанию - QPointF(0,0).

Эта функция была представлена в Qt 4.6.

См. также setTransformOriginPoint() и Преобразования.

QList<QGraphicsTransform *> QGraphicsItem::transformations() const

Возвращает список графических преобразований, которые в настоящее время применяются к этому элементу.

QGraphicsTransform предназначен для применения и управления цепочкой отдельных операций преобразования над элементом. Он особенно полезен в анимациях, где каждая операция преобразования должна интерполироваться независимо или по-разному.

Преобразования комбинируются с rotation(), scale() и transform() элемента для отображения системы координат элемента в родительский элемент.

Эта функция была представлена в Qt 4.6.

См. также setTransformations(), scale(), rotation(), transformOriginPoint() и Преобразования.

[virtual] int QGraphicsItem::type() const

Возвращает тип элемента в виде целого числа. Все стандартные классы graphicsitem связаны с уникальным значением; см. QGraphicsItem::Type. Эта информация о типе используется qgraphicsitem_cast() для различения типов.

Реализация по умолчанию (в QGraphicsItem) возвращает UserType.

Чтобы включить использование qgraphicsitem_cast() с пользовательским элементом, переопределите эту функцию и объявите значение перечисления Type, равное типу вашего пользовательского элемента. Пользовательские элементы должны возвращать значение, большее или равное UserType (65536).

Например:

class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

См. также UserType.

void QGraphicsItem::ungrabKeyboard()

Освобождает захват клавиатуры.

Эта функция была представлена в Qt 4.4.

См. также grabKeyboard() и ungrabMouse().

void QGraphicsItem::ungrabMouse()

Освобождает захват мыши.

Эта функция была представлена в Qt 4.4.

См. также grabMouse() и ungrabKeyboard().

void QGraphicsItem::unsetCursor()

Очищает курсор из этого элемента.

См. также hasCursor() и setCursor().

void QGraphicsItem::update(const QRectF &rect = QRectF())

Планирует перерисовку области, покрытой rect в этом элементе. Вы можете вызвать эту функцию всякий раз, когда ваш элемент должен быть перерисован, например, если он изменяет внешний вид или размер.

Эта функция не вызывает немедленную перерисовку; вместо этого она планирует запрос на перерисовку, который обрабатывается QGraphicsView после того, как управление переходит к циклу событий. Элемент будет перерисован только в том случае, если он виден в любом связанном представлении.

В качестве побочного эффекта перерисовки элемента могут быть перерисованы и другие элементы, которые перекрывают область rect.

Если элемент невидим (т.е. isVisible() возвращает false), эта функция ничего не делает.

См. также paint() и boundingRect().

void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)

Это перегруженная функция.

Эта функция удобства эквивалентна вызову update(QRectF(x, y, width, height)).

[protected] void QGraphicsItem::updateMicroFocus()

Обновляет микрофокус элемента.

Эта функция была представлена в Qt 4.7.

См. также QInputMethod.

[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)

Этот обработчик событий для события event может быть переопределен для получения событий прокрутки для этого элемента. Если вы переопределите эту функцию, event будет принят по умолчанию.

Если вы игнорируете событие (т.е. вызывая QEvent::ignore()), оно будет распространяться на любой элемент под этим элементом. Если ни один элемент не принимает событие, оно будет проигнорировано сценой и будет передано представлению (например, вертикальной полосе прокрутки представления).

Реализация по умолчанию игнорирует событие.

См. также sceneEvent().

END_OF_DOCUMENT_MARKER

QGraphicsWidget *QGraphicsItem::window() const

Возвращает окно элемента, или nullptr если у этого элемента нет окна. Если элемент является окном, он вернёт себя. В противном случае он вернёт ближайшего предка, являющегося окном.

Эта функция была добавлена в Qt 4.4.

См. также QGraphicsWidget::isWindow().

qreal QGraphicsItem::x() const

Эта вспомогательная функция эквивалентна вызову pos().x().

См. также setX() и y().

qreal QGraphicsItem::y() const

Эта вспомогательная функция эквивалентна вызову pos().y().

См. также setY() и x().

qreal QGraphicsItem::zValue() const

Возвращает значение Z элемента. Значение Z влияет на порядок расположения соседних элементов.

Значение Z по умолчанию равно 0.

См. также setZValue(), Сортировка, stackBefore() и ItemStacksBehindParent.

Связанные нечленные функции

T QGraphicsItem::qgraphicsitem_cast(QGraphicsItem *item)

Возвращает переданный item, приведённый к типу T, если item имеет тип T; в противном случае возвращается nullptr.

Примечание: Для корректной работы с пользовательскими элементами необходимо переопределить функцию type() для каждого подкласса пользовательского элемента QGraphicsItem.

Эта функция была добавлена в Qt 4.2.

См. также QGraphicsItem::type() и QGraphicsItem::UserType.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qgraphicsitem.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API