Spec-Zone.ru › Qt 6.0

Класс QGraphicsItem

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

Заголовок: #include <QGraphicsItem>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от:

QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem

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

Открытые типы

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

Открытые функции

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 = 50, int ymargin = 50)
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 = nullptr) = 0
QGraphicsItem * panel() const
QGraphicsItem::PanelModality panelModality() const
QGraphicsItem * parentItem() const
QGraphicsObject * родительскийОбъект() const
QGraphicsWidget * родительскийВиджет() const
QPointF положение() const
void удалитьФильтрСобытийСцены(QGraphicsItem *filterItem)
void сброситьПреобразование()
qreal уголПоворота() const
qreal масштаб() const
QGraphicsScene * сцена() const
QRectF прямоугольникОграниченияСцены() const
QPointF позицияНаСцене() const
QTransform преобразованиеСцены() const
void прокрутить(qreal dx, qreal dy, const QRectF &rect = QRectF())
void установитьПриниматьПеретаскивание(bool on)
void установитьПриниматьСобытияНаведения(bool enabled)
void установитьПриниматьСобытияПрикосновения(bool enabled)
void установитьПринятыеКнопкиМыши(Qt::MouseButtons buttons)
void установитьАктивным(bool active)
void установитьТочностьОбластиОграничения(qreal granularity)
void установитьРежимКэширования(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
void установитьКурсор(const QCursor &cursor)
void установитьДанные(int key, const QVariant &value)
void установитьВключенным(bool enabled)
void фильтроватьСобытияПотомков(bool enabled)
void установитьФлаг(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
void установитьФлаги(QGraphicsItem::GraphicsItemFlags flags)
void получитьФокус(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void установитьПроксиФокуса(QGraphicsItem *item)
void установитьГрафическийЭффект(QGraphicsEffect *effect)
void установитьГруппу(QGraphicsItemGroup *group)
void установитьПодсказкиВвода(Qt::InputMethodHints hints)
void установитьНепрозрачность(qreal opacity)
void установитьМодальностьПанели(QGraphicsItem::PanelModality panelModality)
void установитьРодительскийЭлемент(QGraphicsItem *newParent)
void установитьПоложение(const QPointF &pos)
void установитьПоложение(qreal x, qreal y)
void установитьУголПоворота(qreal angle)
void установитьМасштаб(qreal factor)
void установитьВыбранным(bool selected)
void установитьПодсказку(const QString &toolTip)
void установитьПреобразование(const QTransform &matrix, bool combine = false)
void установитьТочкуНачалаПреобразования(const QPointF &origin)
void установитьТочкуНачалаПреобразования(qreal x, qreal y)
void установитьПреобразования(const QList<QGraphicsTransform *> &transformations)
void установитьВидимым(bool visible)
void установитьX(qreal x)
void установитьY(qreal y)
void установитьЗначениеZ(qreal z)
virtual QPainterPath форма() const
void показать()
void поместитьПеред(const QGraphicsItem *sibling)
QGraphicsObject * вОбъектГрафики()
const QGraphicsObject * вОбъектГрафики() const
QString подсказка() const
QGraphicsItem * верхнийЭлемент() const
QGraphicsWidget * верхнийВиджет() const
QTransform преобразование() const
QPointF точкаНачалаПреобразования() const
QList<QGraphicsTransform *> преобразования() const
virtual int тип() const
void отпуститьКлавиатуру()
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

Protected Functions

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)

Related Non-Members

T qgraphicsitem_cast(QGraphicsItem *item)

Detailed Description

Он предоставляет лёгкую основу для написания собственных пользовательских элементов. Это включает определение геометрии элемента, обнаружения столкновений, его реализации отрисовки и взаимодействия с элементом через обработчики событий. 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 всегда рисует с максимальным качеством.

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

Перечисление QGraphicsItem::GraphicsItemChange

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

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

Константа Значение Описание
QGraphicsItem::ItemEnabledChange 3 Состояние включения/выключения элемента меняется. Если элемент сейчас включен, он станет выключенным, и наоборот. Аргумент value — новое состояние включения (т.е., true или false). Не вызывайте setEnabled() в itemChange(), так как это уведомление уже доставлено. Вместо этого вы можете вернуть новое состояние из itemChange().
QGraphicsItem::ItemEnabledHasChanged 13 Состояние включения/выключения элемента изменилось. Аргумент value — новое состояние включения (т.е., true или false). Не вызывайте setEnabled() в itemChange(), так как это уведомление уже доставлено. Значение возврата игнорируется.
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 Элемент перемещен в новую сцену. Это уведомление также отправляется при добавлении элемента в исходную сцену и при его удалении. scene() элемента — старая сцена или nullptr, если элемент еще не добавлен в сцену. Аргумент value — новая сцена (т.е., указатель на QGraphicsScene) или nullptr, если элемент удален из сцены. Не переопределяйте это изменение, передавая этот элемент в QGraphicsScene::addItem(), так как уведомление уже доставлено; вместо этого вы можете вернуть новую сцену из itemChange(). Используйте эту функцию с осторожностью; возражение против изменения сцены может быстро привести к нежелательной рекурсии.
QGraphicsItem::ItemSceneHasChanged 16 Сцена элемента изменилась. scene() элемента — новая сцена. Это уведомление также отправляется при добавлении элемента в исходную сцену и при его удалении. Аргумент 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, но дополнительно обеспечивает ограничение путем обрезки дочерних элементов.

Константа Значение Описание
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 в QStyleOptionGraphicsItem. По умолчанию exposedRect инициализируется boundingRect() элемента. Вы можете установить этот флаг, чтобы настроить параметры стиля с более точными значениями. Используйте QStyleOptionGraphicsItem::levelOfDetailFromTransform(), если вам необходимо более высокое значение. Этот флаг был представлен в Qt 4.6.
QGraphicsItem::ItemHasNoContents 0x400 Элемент ничего не рисует (т.е., вызов paint() на элементе не имеет эффекта). Вы должны установить этот флаг для элементов, которые не требуют рисования, чтобы гарантировать, что Вид графики избегает ненужной подготовки к рисованию. Этот флаг был представлен в Qt 4.6.
QGraphicsItem::ItemSendsGeometryChanges 0x800 Элемент включает уведомления itemChange() для ItemPositionChange, ItemPositionHasChanged, 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.

enum QGraphicsItem::PanelModality

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

Значения:

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

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

enum 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. По умолчанию, элементы не принимают события наведения.

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

bool QGraphicsItem::acceptTouchEvents() const

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

См. также 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() в качестве аргумента.

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

qreal QGraphicsItem::boundingRegionGranularity() const

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

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

QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const

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

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

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

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

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

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

QRectF QGraphicsItem::childrenBoundingRect() const

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

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

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

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

void QGraphicsItem::clearFocus()

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

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

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

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

QPainterPath QGraphicsItem::clipPath() const

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

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

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

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

См. также 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, или общего предка нет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вызов 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 (непрозрачный). Это значение является комбинацией локальной непрозрачности этого элемента и непрозрачности его родителя и предков. Эффективная непрозрачность определяет, как отображается элемент.

См. также 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 = 50, int ymargin = 50)

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

bool QGraphicsItem::filtersChildEvents() const

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

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

См. также 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.

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

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

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

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

QGraphicsItem *QGraphicsItem::focusProxy() const

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

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

void QGraphicsItem::grabKeyboard()

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

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

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

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

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

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

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

См. также 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.

См. также 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, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только числа.

Эффект может различаться в разных реализациях метода ввода.

См. также 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.

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

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

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

См. также 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 для элементов, не находящихся в сцене.

См. также 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, чем у этого элемента).

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

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

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

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

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

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

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

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

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

bool QGraphicsItem::isPanel() const

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

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

END_OF_DOCUMENT_MARKER

bool QGraphicsItem::isSelected() const

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

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

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

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

bool QGraphicsItem::isUnderMouse() const

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

См. также 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.

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

bool QGraphicsItem::isWidget() const

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

bool QGraphicsItem::isWindow() const

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

См. также 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(), возвращая соответствующее преобразование, чтобы вы могли сами отображать фигуры и координаты. Это также помогает вам писать более эффективный код при многократном отображении между одними и теми же двумя элементами.

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

См. также 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() и Система координат графического представления.

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)).

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

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

См. также mapFromItem(), mapFromScene(), transform(), mapToParent() и Систему координат Виджета графического представления.

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

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

См. также mapToParent(), mapFromItem(), transform() и Систему координат Виджета графического представления.

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

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

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

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

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

См. также mapFromScene(), mapFromItem(), mapToParent() и Систему координат Виджета графического представления.

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)).

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

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

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

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

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

См. также mapToScene(), mapFromItem(), transform() и Систему координат Виджета графического представления.

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

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

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

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

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

См. также mapFromParent(), mapFromItem(), mapToScene() и Систему координат Виджета графического представления.

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)).

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

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

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

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Систему координат Виджета графического представления.

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

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

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

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

См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Систему координат Виджета графического представления.

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

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

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

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

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

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

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

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

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

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

См. также 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)).

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

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

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

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

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

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

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

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

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

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

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)).

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

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

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

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

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

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

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

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

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

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

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

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

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)).

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

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

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

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

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

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

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

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

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

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

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

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

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)).

void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)

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

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

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

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

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

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

void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

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

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

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

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

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

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().

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

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

См. также 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 = nullptr)

Эта функция, обычно вызываемая 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);
}

Кисть painter по умолчанию имеет ширину 0, а её кисть инициализирована кистью QPalette::Text из палитры устройства отрисовки. Кисть инициализирована значением QPalette::Window.

Убедитесь, что вся отрисовка находится в пределах границ boundingRect(), чтобы избежать артефактов отрисовки (поскольку QGraphicsView не обрезает для вас painter). В частности, когда QPainter отрисовывает контур фигуры с помощью назначенной QPen, половина контура будет нарисована снаружи, а половина внутри фигуры, которую вы отрисовываете (например, с шириной пера в 2 единицы, вы должны отрисовать контуры на 1 единицу внутри boundingRect()). QGraphicsItem не поддерживает использование декоративных перьев с ненулевой шириной.

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

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

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

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

QGraphicsItem *QGraphicsItem::panel() const

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

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

QGraphicsItem::PanelModality QGraphicsItem::panelModality() const

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

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

QGraphicsItem *QGraphicsItem::parentItem() const

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

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

QGraphicsObject *QGraphicsItem::parentObject() const

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

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

QGraphicsWidget *QGraphicsItem::parentWidget() const

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

См. также 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()).

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

qreal QGraphicsItem::rotation() const

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

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

См. также setRotation(), transformOriginPoint() и Transformations.

qreal QGraphicsItem::scale() const

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

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

См. также setScale(), rotation() и Transformations.

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(), которая возвращает только локальное преобразование элемента, эта функция включает позицию элемента (и всех родительских элементов) и все свойства преобразования.

См. также transform(), setTransform(), scenePos(), Система координат Вид графики и Transformations.

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);

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

void QGraphicsItem::setAcceptDrops(bool on)

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

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

void QGraphicsItem::setAcceptHoverEvents(bool enabled)

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

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

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

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

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

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

void QGraphicsItem::setAcceptTouchEvents(bool enabled)

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

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

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

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

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

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

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

void QGraphicsItem::setActive(bool active)

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

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

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

void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)

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

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

См. также 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() (то есть точно так же, как если бы кэширование не было включено).

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

void QGraphicsItem::setCursor(const QCursor &cursor)

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

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

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.

См. также 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, могут принимать фокус клавиатуры.

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

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

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

END_OF_DOCUMENT_MARKER

void QGraphicsItem::setFocusProxy(QGraphicsItem *item)

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

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

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

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

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

void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)

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

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

QGraphicsItem принимает владение effect.

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

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

void QGraphicsItem::setGroup(QGraphicsItemGroup *group)

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

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

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

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

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

void QGraphicsItem::setOpacity(qreal opacity)

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

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

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

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

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

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

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

Устанавливает модальность для этого элемента на panelModality.

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

См. также 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() для отображения системы координат элемента в системе координат родительского элемента.

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

void QGraphicsItem::setScale(qreal factor)

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

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

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

См. также 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()) в комбинированное преобразование, которое отображает систему координат элемента в его родителя.

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

void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)

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

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

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

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

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

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

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

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

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

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

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

См. также 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()).

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

void QGraphicsItem::setY(qreal y)

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

См. также 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() для возвращения простой прямоугольной формы, но подклассы могут переопределять эту функцию для возвращения более точной формы для непрямоугольных элементов. Например, круглый элемент может выбрать возврат эллиптической формы для лучшего обнаружения столкновений. Например:

Контур формы может меняться в зависимости от ширины и стиля пера, используемого при рисовании. Если вы хотите включить этот контур в форму элемента, вы можете создать форму из штриха с помощью 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 одинаковые, порядок вставки определяет порядок стекирования.

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

QGraphicsObject *QGraphicsItem::toGraphicsObject()

Возвращает графический элемент, преобразованный в QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.

const QGraphicsObject *QGraphicsItem::toGraphicsObject() const

Возвращает графический элемент, преобразованный в QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.

QString QGraphicsItem::toolTip() const

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

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

QGraphicsItem *QGraphicsItem::topLevelItem() const

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

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

QGraphicsWidget *QGraphicsItem::topLevelWidget() const

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

QTransform QGraphicsItem::transform() const

Возвращает матрицу преобразования этого элемента.

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

По умолчанию матрица преобразования — единичная матрица.

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

QPointF QGraphicsItem::transformOriginPoint() const

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

По умолчанию — QPointF(0,0).

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

QList<QGraphicsTransform *> QGraphicsItem::transformations() const

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

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

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

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

[virtual] int QGraphicsItem::type() const

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

Освобождает захват клавиатуры.

См. также grabKeyboard() и ungrabMouse().

void QGraphicsItem::ungrabMouse()

Освобождает захват мыши.

См. также 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()

Обновляет микрофокус элемента.

См. также QInputMethod.

[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)

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

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

Реализация по умолчанию игнорирует событие.

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

QGraphicsWidget *QGraphicsItem::window() const

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

См. также 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.

Связанные нечленуемые функции

template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)

Возвращает указанный item, преобразованный к типу T, если item имеет тип T; в противном случае возвращается nullptr.

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

См. также QGraphicsItem::type() и QGraphicsItem::UserType.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qgraphicsitem.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API