Класс QGraphicsItem
Класс QGraphicsItem является базовым классом для всех графических элементов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsItem> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследуется от: | QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem |
Открытые типы
| Перечисление | CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache } |
| Перечисление | GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemMatrixChange, ItemPositionChange, ..., ItemScenePositionHasChanged } |
| Перечисление | GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ..., 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 = ..., int ymargin = ...) |
| bool | filtersChildEvents() const |
| QGraphicsItem::GraphicsItemFlags | flags() const |
| QGraphicsItem * | focusItem() const |
| QGraphicsItem * | focusProxy() const |
| void | grabKeyboard() |
| void | grabMouse() |
| QGraphicsEffect * | graphicsEffect() const |
| QGraphicsItemGroup * | group() const |
| bool | hasCursor() const |
| bool | hasFocus() const |
| void | hide() |
| Qt::InputMethodHints | inputMethodHints() const |
| void | installSceneEventFilter(QGraphicsItem *filterItem) |
| bool | isActive() const |
| bool | isAncestorOf(const QGraphicsItem *child) const |
| bool | isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const |
| bool | isClipped() const |
| bool | isEnabled() const |
| bool | isObscured(const QRectF &rect = QRectF()) const |
| bool | isObscured(qreal x, qreal y, qreal w, qreal h) const |
| virtual bool | isObscuredBy(const QGraphicsItem *item) const |
| bool | isPanel() const |
| bool | isSelected() const |
| bool | isUnderMouse() const |
| bool | isVisible() const |
| bool | isVisibleTo(const QGraphicsItem *parent) const |
| bool | isWidget() const |
| bool | isWindow() const |
| QTransform | itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const |
| QPointF | mapFromItem(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromParent(const QPointF &point) const |
| QPolygonF | mapFromParent(const QRectF &rect) const |
| QPolygonF | mapFromParent(const QPolygonF &polygon) const |
| QPainterPath | mapFromParent(const QPainterPath &path) const |
| QPointF | mapFromParent(qreal x, qreal y) const |
| QPolygonF | mapFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromScene(const QPointF &point) const |
| QPolygonF | mapFromScene(const QRectF &rect) const |
| QPolygonF | mapFromScene(const QPolygonF &polygon) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPointF | mapFromScene(qreal x, qreal y) const |
| QPolygonF | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromParent(const QRectF &rect) const |
| QRectF | mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromScene(const QRectF &rect) const |
| QRectF | mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToParent(const QRectF &rect) const |
| QRectF | mapRectToParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToScene(const QRectF &rect) const |
| QRectF | mapRectToScene(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToItem(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapToItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapToItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToParent(const QPointF &point) const |
| QPolygonF | mapToParent(const QRectF &rect) const |
| QPolygonF | mapToParent(const QPolygonF &polygon) const |
| QPainterPath | mapToParent(const QPainterPath &path) const |
| QPointF | mapToParent(qreal x, qreal y) const |
| QPolygonF | mapToParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToScene(const QPointF &point) const |
| QPolygonF | mapToScene(const QRectF &rect) const |
| QPolygonF | mapToScene(const QPolygonF &polygon) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(qreal x, qreal y) const |
| QPolygonF | mapToScene(qreal x, qreal y, qreal w, qreal h) const |
| void | moveBy(qreal dx, qreal dy) |
| qreal | opacity() const |
| virtual QPainterPath | opaqueArea() const |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...) = 0 |
| QGraphicsItem * | panel() const |
| QGraphicsItem::PanelModality | panelModality() const |
| QGraphicsItem * | parentItem() const |
| QGraphicsObject * | parentObject() const |
| QGraphicsWidget * | parentWidget() const |
| QPointF | pos() const |
| void | removeSceneEventFilter(QGraphicsItem *filterItem) |
| void | resetTransform() |
| qreal | rotation() const |
| qreal | scale() const |
| QGraphicsScene * | scene() const |
| QRectF | sceneBoundingRect() const |
| QPointF | scenePos() const |
| QTransform | sceneTransform() const |
| void | scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()) |
| void | setAcceptDrops(bool on) |
| void | setAcceptHoverEvents(bool enabled) |
| void | setAcceptTouchEvents(bool enabled) |
| void | setAcceptedMouseButtons(Qt::MouseButtons buttons) |
| void | setActive(bool active) |
| void | setBoundingRegionGranularity(qreal granularity) |
| void | setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize()) |
| void | setCursor(const QCursor &cursor) |
| void | setData(int key, const QVariant &value) |
| void | setEnabled(bool enabled) |
| void | setFiltersChildEvents(bool enabled) |
| void | setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true) |
| void | setFlags(QGraphicsItem::GraphicsItemFlags flags) |
| void | setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason) |
| void | setFocusProxy(QGraphicsItem *item) |
| void | setGraphicsEffect(QGraphicsEffect *effect) |
| void | setGroup(QGraphicsItemGroup *group) |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
| void | setOpacity(qreal opacity) |
| void | setPanelModality(QGraphicsItem::PanelModality panelModality) |
| void | setParentItem(QGraphicsItem *newParent) |
| void | setPos(const QPointF &pos) |
| void | setPos(qreal x, qreal y) |
| void | setRotation(qreal angle) |
| void | setScale(qreal factor) |
| void | setSelected(bool selected) |
| void | setToolTip(const QString &toolTip) |
| void | setTransform(const QTransform &matrix, bool combine = false) |
| void | setTransformOriginPoint(const QPointF &origin) |
| void | setTransformOriginPoint(qreal x, qreal y) |
| void | setTransformations(const QList<QGraphicsTransform *> &transformations) |
| void | setVisible(bool visible) |
| void | setX(qreal x) |
| void | setY(qreal y) |
| void | setZValue(qreal z) |
| virtual QPainterPath | shape() const |
| void | show() |
| void | stackBefore(const QGraphicsItem *sibling) |
| QGraphicsObject * | toGraphicsObject() |
| const QGraphicsObject * | toGraphicsObject() const |
| QString | toolTip() const |
| QGraphicsItem * | topLevelItem() const |
| QGraphicsWidget * | topLevelWidget() const |
| QTransform | transform() const |
| QPointF | transformOriginPoint() const |
| QList<QGraphicsTransform *> | transformations() const |
| virtual int | type() const |
| void | ungrabKeyboard() |
| 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
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
It provides a light-weight foundation for writing your own custom items. This includes defining the item's geometry, collision detection, its painting implementation and item interaction through its event handlers. QGraphicsItem is part of the Graphics View Framework
For convenience, Qt provides a set of standard graphics items for the most common shapes. These are:
- QGraphicsEllipseItem provides an ellipse item
- QGraphicsLineItem provides a line item
- QGraphicsPathItem provides an arbitrary path item
- QGraphicsPixmapItem provides a pixmap item
- QGraphicsPolygonItem provides a polygon item
- QGraphicsRectItem provides a rectangular item
- QGraphicsSimpleTextItem provides a simple text label item
- QGraphicsTextItem provides an advanced text browser item
All of an item's geometric information is based on its local coordinate system. The item's position, pos(), is the only function that does not operate in local coordinates, as it returns a position in parent coordinates. The Graphics View Coordinate System describes the coordinate system in detail.
You can set whether an item should be visible (i.e., drawn, and accepting events), by calling setVisible(). Hiding an item will also hide its children. Similarly, you can enable or disable an item by calling setEnabled(). If you disable an item, all its children will also be disabled. By default, items are both visible and enabled. To toggle whether an item is selected or not, first enable selection by setting the ItemIsSelectable flag, and then call setSelected(). Normally, selection is toggled by the scene, as a result of user interaction.
To write your own graphics item, you first create a subclass of QGraphicsItem, and then start by implementing its two pure virtual public functions: boundingRect(), which returns an estimate of the area painted by the item, and paint(), which implements the actual painting. For example:
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);
}
}; The boundingRect() function has many different purposes. QGraphicsScene bases its item index on boundingRect(), and QGraphicsView uses it both for culling invisible items, and for determining the area that needs to be recomposed when drawing overlapping items. In addition, QGraphicsItem's collision detection mechanisms use boundingRect() to provide an efficient cut-off. The fine grained collision algorithm in collidesWithItem() is based on calling shape(), which returns an accurate outline of the item's shape as a QPainterPath.
QGraphicsScene expects all items boundingRect() and shape() to remain unchanged unless it is notified. If you want to change an item's geometry in any way, you must first call prepareGeometryChange() to allow QGraphicsScene to update its bookkeeping.
Collision detection can be done in two ways:
- Reimplement shape() to return an accurate shape for your item, and rely on the default implementation of collidesWithItem() to do shape-shape intersection. This can be rather expensive if the shapes are complex.
- Reimplement collidesWithItem() to provide your own custom item and shape collision algorithm.
Функцию contains() можно вызвать, чтобы определить, содержит ли элемент заданную точку. Эту функцию также можно переопределить в элементе. По умолчанию поведение contains() основано на вызове shape().
Элементы могут содержать другие элементы и сами содержаться другими элементами. Все элементы могут иметь родительский элемент и список дочерних элементов. Если у элемента нет родителя, его позиция задаётся в координатах родителя (т.е. в локальных координатах родителя). Родительские элементы передают как свою позицию, так и своё преобразование всем своим дочерним элементам.
Преобразования
QGraphicsItem поддерживает проективные преобразования помимо своей базовой позиции, pos(). Существует несколько способов изменить преобразование элемента. Для простых преобразований можно вызвать вспомогательные функции setRotation() или setScale(), или передать любую матрицу преобразования в setTransform(). Для сложного управления преобразованиями можно установить несколько комбинированных преобразований, вызвав setTransformations().
Преобразования элементов накапливаются от родителя к дочернему элементу, поэтому, если и родительский, и дочерний элемент повернуты на 90 градусов, общее преобразование дочернего элемента будет составлять 180 градусов. Аналогично, если родительский элемент масштабируется в 2 раза больше своего первоначального размера, его дочерние элементы также будут в два раза больше. Преобразование элемента не влияет на его локальную геометрию; все геометрические функции (например, contains(), update() и все функции отображения) по-прежнему работают в локальных координатах. Для удобства QGraphicsItem предоставляет функции sceneTransform(), возвращающую общую матрицу преобразования элемента (включая его позицию и позиции всех родителей и их преобразования), и scenePos(), возвращающую его позицию в координатах сцены. Для сброса матрицы преобразования элемента вызовите resetTransform().
Некоторые операции преобразования дают различный результат в зависимости от порядка их применения. Например, если вы сначала масштабируете, а затем поворачиваете преобразование, результат может отличаться от результата, если сначала повернуть, а затем масштабировать. Однако порядок, в котором вы устанавливаете свойства преобразования в QGraphicsItem, не влияет на результирующее преобразование; QGraphicsItem всегда применяет свойства в определённом, фиксированном порядке:
- Применяется базовое преобразование элемента (transform())
- Применяется список преобразований элемента в порядке их следования (transformations())
- Элемент поворачивается относительно точки начала преобразования (rotation(), transformOriginPoint())
- Элемент масштабируется относительно точки начала преобразования (scale(), transformOriginPoint())
Отрисовка
Функция paint() вызывается QGraphicsView для отрисовки содержимого элемента. У элемента нет собственного фона или заполнения по умолчанию; всё, что находится под элементом, будет просвечивать через все области, которые явно не отрисованы в этой функции. Вы можете вызвать update() для планирования перерисовки, необязательно указав прямоугольник, который нуждается в перерисовке. В зависимости от того, виден ли элемент в представлении, он может быть перерисован или нет; нет эквивалента QWidget::repaint() в QGraphicsItem.
Элементы отрисовываются представлением, начиная с родительских элементов, а затем отрисовывая дочерние элементы в порядке возрастания порядка наложения. Вы можете установить порядок наложения элемента, вызвав setZValue(), и проверить его, вызвав zValue(), где элементы с низкими значениями z отрисовываются перед элементами с высокими значениями z. Порядок наложения относится к элементам-сверстникам; родители всегда отрисовываются перед своими дочерними элементами.
Сортировка
Все элементы отрисовываются в определённом, устойчивом порядке, и этот же порядок определяет, какие элементы получат ввод мыши первыми при нажатии на сцену. Обычно вам не нужно беспокоиться о сортировке, так как элементы следуют "естественному порядку", следуя логической структуре сцены.
Дочерние элементы элемента накладываются поверх родителя, а элементы-сверстники накладываются в порядке вставки (т.е. в том же порядке, в котором они были добавлены в сцену или в того же родителя). Если вы добавите элемент A, а затем B, то B будет сверху A. Если затем вы добавите C, порядок наложения элементов будет A, затем B, затем C.
Этот пример демонстрирует порядок наложения всех конечностей робота из примера Drag and Drop Robot. Туловище является корневым элементом (все остальные элементы являются дочерними или потомками туловища), поэтому оно отрисовывается первым. Затем рисуется голова, так как это первый элемент в списке дочерних элементов туловища. Затем рисуется левая верхняя рука. Поскольку нижняя рука является дочерним элементом верхней руки, затем рисуется нижняя рука, за которой следует следующий элемент-сверстник верхней руки — правая верхняя рука и так далее.
Для продвинутых пользователей есть способы изменить способ сортировки ваших элементов:
- Вы можете вызвать setZValue() для элемента, чтобы явно расположить его поверх или под другими элементами-сверстниками. Значение Z по умолчанию для элемента равно 0. Элементы с одинаковым значением Z накладываются в порядке вставки.
- Вы можете вызвать stackBefore() для изменения порядка списка дочерних элементов. Это напрямую изменит порядок вставки.
- Можно установить флаг ItemStacksBehindParent, чтобы расположить дочерний элемент позади родительского.
Порядок наложения двух элементов-сверстников также учитывается для каждого дочернего элемента и потомка каждого элемента. Итак, если один элемент находится поверх другого, то все его дочерние элементы также будут находиться поверх всех дочерних элементов другого элемента.
События
QGraphicsItem получает события от QGraphicsScene через виртуальную функцию sceneEvent(). Эта функция распределяет наиболее распространённые события по набору вспомогательных обработчиков событий:
- contextMenuEvent() обрабатывает события контекстного меню
- focusInEvent() и focusOutEvent() обрабатывают события получения и потери фокуса
- hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent() обрабатывают события ввода, перемещения и выхода с области наведения
- inputMethodEvent() обрабатывает события ввода для поддержки функций доступности
- keyPressEvent() и keyReleaseEvent() обрабатывают события нажатия и отпускания клавиш
- mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и mouseDoubleClickEvent() обрабатывают события нажатия, перемещения, отпускания, нажатия и двойного щелчка мыши
Вы можете фильтровать события для любого другого элемента, установив фильтры событий. Эта функциональность отделена от стандартных фильтров событий Qt (см. QObject::installEventFilter()), которые работают только с подклассами QObject. После установки вашего элемента в качестве фильтра событий для другого элемента, вызвав installSceneEventFilter(), отфильтрованные события будут получены виртуальной функцией sceneEventFilter(). Вы можете удалить фильтры событий элемента, вызвав removeSceneEventFilter().
Пользовательские данные
Иногда полезно регистрировать пользовательские данные с элементом, будь то пользовательский элемент или стандартный элемент. Вы можете вызвать setData() для любого элемента, чтобы сохранить данные в нём с помощью пары ключ-значение (ключ — целое число, а значение — QVariant). Чтобы получить пользовательские данные из элемента, вызовите data(). Эта функциональность полностью не затронута самим Qt; она предоставляется для удобства пользователя.
См. также QGraphicsScene, QGraphicsView и Графический фреймворк представления.
Документация по типам членов
перечисление QGraphicsItem::CacheMode
Это перечисление описывает режимы кеширования QGraphicsItem. Кеширование используется для ускорения отрисовки путём выделения и отрисовки в буфере пикселей вне экрана, который может быть повторно использован, когда элемент требует перерисовки. Для некоторых устройств отображения кеш хранится непосредственно в графической памяти, что делает отрисовку очень быстрой.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::NoCache |
0 |
По умолчанию; кеширование элементов отключено. QGraphicsItem::paint() вызывается каждый раз, когда элемент требует перерисовки. |
QGraphicsItem::ItemCoordinateCache |
1 |
Кеширование включено для логической (локальной) системы координат элемента. QGraphicsItem создаёт буфер пикселей вне экрана с настраиваемым размером/разрешением, который можно передать в QGraphicsItem::setCacheMode(). Качество отрисовки обычно ухудшается в зависимости от разрешения кеша и преобразования элемента. При первой перерисовке элемента он будет отрисовываться в кеш, а затем кеш будет повторно использоваться при каждой последующей перерисовке. Кеш также будет повторно использован при преобразовании элемента. Для изменения разрешения кеша можно снова вызвать setCacheMode(). |
QGraphicsItem::DeviceCoordinateCache |
2 |
Кеширование включено на уровне устройства отображения в координатах устройства. Этот режим предназначен для элементов, которые могут перемещаться, но не поворачиваться, масштабироваться или наклоняться. Если элемент преобразован непосредственно или косвенно, кеш будет автоматически пересоздан. В отличие от ItemCoordinateCacheMode, DeviceCoordinateCache всегда производит отрисовку с максимальным качеством. |
Это перечисление было введено или изменено в Qt 4.4.
См. также QGraphicsItem::setCacheMode().
enum QGraphicsItem::GraphicsItemChange
Этот перечисление описывает изменения состояния, о которых уведомляет QGraphicsItem::itemChange(). Уведомления отправляются при изменениях состояния, и в некоторых случаях можно внести коррективы (см. документацию по каждому изменению для подробностей).
Примечание: Будьте осторожны при вызове функций на самом QGraphicsItem внутри itemChange(), так как некоторые вызовы функций могут привести к нежелательной рекурсии. Например, вы не можете вызвать setPos() в itemChange() при уведомлении о изменении положения элемента, так как функция setPos() снова вызовет itemChange(ItemPositionChange). Вместо этого вы можете вернуть новую, скорректированную позицию из itemChange().
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::ItemEnabledChange |
3 |
Изменяется состояние активности элемента. Если элемент в данный момент активен, он станет неактивным, и наоборот. Аргумент value — новое состояние активности (т. е. true или false). Не вызывайте setEnabled() в itemChange(), так как это уведомление уже доставлено. Вместо этого вы можете вернуть новое состояние из itemChange(). |
QGraphicsItem::ItemEnabledHasChanged |
13 |
Состояние активности элемента изменилось. Аргумент value — новое состояние активности (т. е. true или false). Не вызывайте setEnabled() в itemChange(), так как это уведомление уже доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemMatrixChange |
1 |
Изменяется матрица аффинного преобразования элемента. Это значение устарело; вы можете использовать ItemTransformChange вместо этого. |
QGraphicsItem::ItemPositionChange |
0 |
Изменяется позиция элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется локальная позиция элемента относительно его родителя (т. е. в результате вызова setPos() или moveBy()). Аргумент value — новая позиция (т. е. QPointF). Вы можете вызвать pos() для получения исходной позиции. Не вызывайте setPos() или moveBy() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новую, скорректированную позицию из itemChange(). После этого уведомления QGraphicsItem немедленно отправляет уведомление ItemPositionHasChanged, если позиция изменилась. |
QGraphicsItem::ItemPositionHasChanged |
9 |
Позиция элемента изменилась. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилась локальная позиция элемента относительно его родителя. Аргумент value — новая позиция (та же, что и pos()), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т. е. уведомление только для чтения). |
QGraphicsItem::ItemTransformChange |
8 |
Изменяется матрица преобразования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется локальная матрица преобразования элемента (т. е. в результате вызова setTransform(). Аргумент value — новая матрица (т. е. QTransform); для получения старой матрицы вызовите transform(). Не вызывайте setTransform() или устанавливайте какие-либо свойства преобразования в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новую матрицу из itemChange(). Это уведомление не отправляется, если вы изменяете свойства преобразования. |
QGraphicsItem::ItemTransformHasChanged |
10 |
Матрица преобразования элемента изменилась либо потому, что был вызван setTransform, либо потому, что было изменено одно из свойств преобразования. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилась локальная матрица преобразования элемента. Аргумент value — новая матрица (та же, что и transform()), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т. е. уведомление только для чтения). |
QGraphicsItem::ItemRotationChange |
28 |
Изменяется свойство поворота элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство поворота элемента (т. е. в результате вызова setRotation()). Аргумент value — новый угол поворота (т. е. double); для получения старого угла поворота вызовите rotation(). Не вызывайте setRotation() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новый угол поворота из itemChange(). |
QGraphicsItem::ItemRotationHasChanged |
29 |
Свойство поворота элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство поворота элемента. Аргумент value — новый угол поворота (т. е. double), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т. е. уведомление только для чтения). Не вызывайте setRotation() в itemChange(), так как это уведомление уже доставлено. |
QGraphicsItem::ItemScaleChange |
30 |
Изменяется свойство масштабирования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство масштабирования элемента (т. е. в результате вызова setScale()). Аргумент value — новый масштаб (т. е. double); для получения старого масштаба вызовите scale(). Не вызывайте setScale() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новый масштаб из itemChange(). |
QGraphicsItem::ItemScaleHasChanged |
31 |
Свойство масштабирования элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство масштабирования элемента. Аргумент value — новый масштаб (т. е. double), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т. е. уведомление только для чтения). Не вызывайте setScale() в itemChange(), так как это уведомление уже доставлено. |
QGraphicsItem::ItemTransformOriginPointChange |
32 |
Изменяется свойство точки начала преобразования элемента. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и когда изменяется свойство точки начала преобразования элемента (т. е. в результате вызова setTransformOriginPoint()). Аргумент value — новая точка начала (т. е. QPointF); для получения старой точки начала вызовите transformOriginPoint(). Не вызывайте setTransformOriginPoint() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новую точку начала преобразования из itemChange(). |
QGraphicsItem::ItemTransformOriginPointHasChanged |
33 |
Свойство точки начала преобразования элемента изменилось. Это уведомление отправляется, если установлен флаг ItemSendsGeometryChanges, и после того, как изменилось свойство точки начала преобразования элемента. Аргумент value — новая точка начала (т. е. QPointF), и QGraphicsItem игнорирует возвращаемое значение для этого уведомления (т. е. уведомление только для чтения). Не вызывайте setTransformOriginPoint() в itemChange(), так как это уведомление уже доставлено. |
QGraphicsItem::ItemSelectedChange |
4 |
Изменяется состояние выделения элемента. Если элемент в данный момент выделен, он станет невыделенным, и наоборот. Аргумент value — новое состояние выделения (т. е. true или false). Не вызывайте setSelected() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новое состояние выделения из itemChange(). |
QGraphicsItem::ItemSelectedHasChanged |
14 |
Состояние выделения элемента изменилось. Аргумент value — новое состояние выделения (т. е. true или false). Не вызывайте setSelected() в itemChange(), так как это уведомление уже доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemVisibleChange |
2 |
Изменяется состояние видимости элемента. Если элемент в данный момент видим, он станет невидимым, и наоборот. Аргумент value — новое состояние видимости (т. е. true или false). Не вызывайте setVisible() в itemChange(), так как это уведомление уже доставлено; вместо этого вы можете вернуть новое состояние видимости из itemChange(). |
QGraphicsItem::ItemVisibleHasChanged |
12 |
Состояние видимости элемента изменилось. Аргумент value — новое состояние видимости (т. е. true или false). Не вызывайте setVisible() в itemChange(), так как это уведомление уже доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemParentChange |
5 |
Родительский элемент изменяется. Аргумент value — новый родительский элемент (т.е., указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange(), так как уведомление уже доставлено; вместо этого вы можете вернуть нового родителя из itemChange(). |
QGraphicsItem::ItemParentHasChanged |
15 |
Родительский элемент изменился. Аргумент value — новый родитель (т.е., указатель на QGraphicsItem). Не вызывайте setParentItem() в itemChange(), так как уведомление уже доставлено. Возвращаемое значение игнорируется. |
QGraphicsItem::ItemChildAddedChange |
6 |
К этому элементу добавлен дочерний элемент. Аргумент value — новый дочерний элемент (т.е., указатель на QGraphicsItem). Не передавайте этот элемент в функцию setParentItem() любого элемента, так как уведомление уже доставлено. Возвращаемое значение не используется; вы не можете ничего изменить в этом уведомлении. Обратите внимание, что новый дочерний элемент может быть не полностью создан, когда это уведомление отправляется; вызов чисто виртуальных функций в дочернем элементе может привести к сбою. |
QGraphicsItem::ItemChildRemovedChange |
7 |
Дочерний элемент удален из этого элемента. Аргумент value — дочерний элемент, который собирается удалить (т.е., указатель на QGraphicsItem). Возвращаемое значение не используется; вы не можете ничего изменить в этом уведомлении. |
QGraphicsItem::ItemSceneChange |
11 |
Элемент перемещен в новую сцену. Это уведомление также отправляется, когда элемент добавляется в исходную сцену и когда он удаляется. scene() элемента — старая сцена (или 0, если элемент еще не добавлен в сцену). Аргумент value — новая сцена (т.е., указатель на QGraphicsScene) или нулевой указатель, если элемент удален из сцены. Не перезаписывайте это изменение, передавая этот элемент в 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, либо matrix в QStyleOptionGraphicsItem. По умолчанию exposedRect инициализируется с boundingRect() элемента, а matrix не преобразован. Вы можете включить этот флаг, чтобы параметры стиля были настроены с более тонкими значениями. Обратите внимание, что QStyleOptionGraphicsItem::levelOfDetail не изменяется этим флагом и всегда инициализируется значением 1. Используйте QStyleOptionGraphicsItem::levelOfDetailFromTransform(), если вам нужно большее значение. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemHasNoContents |
0x400 |
Элемент ничего не рисует (т.е., вызов paint() на элементе не имеет эффекта). Вы должны установить этот флаг на элементы, которые не нуждаются в отрисовке, чтобы убедиться, что вид Graphics View избегает ненужной подготовки к отрисовке. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemSendsGeometryChanges |
0x800 |
Элемент включает уведомления itemChange() для ItemPositionChange, ItemPositionHasChanged, ItemMatrixChange, ItemTransformChange, ItemTransformHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange и ItemTransformOriginPointHasChanged. По соображениям производительности эти уведомления отключены по умолчанию. Вы должны включить этот флаг, чтобы получать уведомления о изменениях положения и преобразований. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemAcceptsInputMethod |
0x1000 |
Элемент поддерживает методы ввода, обычно используемые для азиатских языков. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemNegativeZStacksBehindParent |
0x2000 |
Элемент автоматически размещается под родителем, если его значение z отрицательное. Этот флаг позволяет setZValue() переключать ItemStacksBehindParent. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemIsPanel |
0x4000 |
Элемент является панелью. Панель обеспечивает обработку активации и фокуса. Одновременно может быть активна только одна панель (см. QGraphicsItem::isActive()). Когда ни одна панель не активна, QGraphicsScene активирует все элементы, которые не являются панелями. Элементы окна (т.е., QGraphicsItem::isWindow() возвращает true) являются панелями. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemSendsScenePositionChanges |
0x10000 |
Элемент включает уведомления itemChange() для ItemScenePositionHasChanged. По соображениям производительности эти уведомления отключены по умолчанию. Вы должны включить этот флаг, чтобы получать уведомления об изменениях положения сцены. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemContainsChildrenInShape |
0x80000 |
Этот флаг указывает, что все прямые или косвенные дочерние элементы элемента рисуются только внутри формы элемента. В отличие от ItemClipsChildrenToShape, это ограничение не применяется. Установите ItemContainsChildrenInShape, когда вы вручную гарантируете, что рисование ограничено формой элемента, и хотите избежать связанных с этим расходов на принудительное применение клипа. Установка этого флага обеспечивает более эффективную отрисовку и обнаружение столкновений. По умолчанию флаг отключен. |
Примечание: Если установлены оба флага, ItemClipsChildrenToShape и этот флаг, то будет применено ограничение клипа. Это эквивалентно просто установке ItemClipsChildrenToShape.
Этот флаг был введён в Qt 5.4.
Тип GraphicsItemFlags — это typedef для QFlags<GraphicsItemFlag>. Он хранит логическое ИЛИ комбинацию значений GraphicsItemFlag.
перечисление QGraphicsItem::PanelModality
Это перечисление определяет поведение модальной панели. Модальная панель — это та, которая блокирует ввод для других панелей. Обратите внимание, что элементы, являющиеся дочерними элементами модальной панели, не заблокированы.
Значения:
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::NonModal |
0 |
Панель не является модальной и не блокирует ввод для других панелей. Это значение по умолчанию для панелей. |
QGraphicsItem::PanelModal |
1 |
Панель является модальной для одной иерархии элементов и блокирует ввод для её родительской панели, всех родительских панелей и всех элементов-братьев родительской и родительских панелей. |
QGraphicsItem::SceneModal |
2 |
Окно является модальным для всей сцены и блокирует ввод для всех панелей. |
Это перечисление было введено или изменено в Qt 4.6.
См. также QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality(), и QGraphicsItem::ItemIsPanel.
перечисление QGraphicsItem::anonymous
Значение, возвращаемое виртуальной функцией type() в стандартных классах графических элементов в Qt. Все стандартные классы графических элементов в Qt ассоциированы с уникальным значением для Type, например, значение, возвращаемое QGraphicsPathItem::type(), равно 2.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::Type |
1 |
class QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
public:
enum { Type = 2 };
int type() const override { return Type; }
...
}; |
QGraphicsItem::UserType |
65536 |
Самое низкое значение, возвращаемое виртуальной функцией type() для пользовательских подклассов QGraphicsItem.class CustomItem : public QGraphicsItem
{
public:
enum { Type = UserType + 1 };
int type() const override
{
// Enable the use of qgraphicsitem_cast with this item.
return Type;
}
...
}; |
Документация по функциям-членам
QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)
Конструктор QGraphicsItem с заданным элементом-родителем. Он не изменяет родительский объект, возвращаемый QObject::parent().
Если parent равен 0, вы можете добавить элемент в сцену, вызвав QGraphicsScene::addItem(). Тогда элемент станет верхнеуровневым элементом.
См. также QGraphicsScene::addItem() и setParentItem().
[virtual] QGraphicsItem::~QGraphicsItem()
Удаляет QGraphicsItem и всех его дочерних элементов. Если этот элемент в данный момент связан со сценой, он будет удалён из сцены перед удалением.
Примечание: Более эффективно удалить элемент из QGraphicsScene перед удалением элемента.
bool QGraphicsItem::acceptDrops() const
Возвращает true если этот элемент может принимать события перетаскивания и放下; в противном случае возвращает false. По умолчанию элементы не принимают события перетаскивания и放下; элементы прозрачны для перетаскивания и放下.
См. также setAcceptDrops().
bool QGraphicsItem::acceptHoverEvents() const
Возвращает true если элемент принимает события наведения (QGraphicsSceneHoverEvent); в противном случае возвращает false. По умолчанию элементы не принимают события наведения.
Эта функция была добавлена в Qt 4.4.
См. также setAcceptHoverEvents() и setAcceptedMouseButtons().
bool QGraphicsItem::acceptTouchEvents() const
Возвращает true если элемент принимает события касания; в противном случае возвращает false. По умолчанию элементы не принимают события касания.
Эта функция была добавлена в Qt 4.6.
См. также setAcceptTouchEvents().
Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const
Возвращает кнопки мыши, для которых этот элемент принимает события мыши. По умолчанию принимаются все кнопки мыши.
Если элемент принимает кнопку мыши, он станет элементом захвата мыши при поступлении события нажатия мыши для этой кнопки. Однако, если элемент не принимает кнопку, QGraphicsScene перенаправит события мыши первому элементу под ним, который это делает.
См. также setAcceptedMouseButtons() и mousePressEvent().
[virtual] void QGraphicsItem::advance(int phase)
Эта виртуальная функция вызывается дважды для всех элементов слотом QGraphicsScene::advance(). В первой фазе все элементы вызываются с phase == 0, указывая, что элементы на сцене собираются продвинуться, а затем все элементы вызываются с phase == 1. Переопределите эту функцию, чтобы обновить свой элемент, если вам нужна простая анимация, управляемая сценой.
По умолчанию ничего не делает.
Эта функция предназначена для анимации. Альтернативой является множественное наследование от QObject и QGraphicsItem и использование Фреймворка анимации.
См. также QGraphicsScene::advance() и QTimeLine.
[pure virtual] QRectF QGraphicsItem::boundingRect() const
Эта чисто виртуальная функция определяет внешние границы элемента как прямоугольник; вся отрисовка должна быть ограничена внутри прямоугольника границ элемента. QGraphicsView использует это для определения того, требует ли элемент перерисовки.
Хотя форма элемента может быть произвольной, прямоугольник границ всегда прямоугольный, и он не зависит от преобразования элементов.
Если вы хотите изменить прямоугольник границ элемента, вы должны сначала вызвать prepareGeometryChange(). Это уведомляет сцену о предстоящем изменении, чтобы она могла обновить индекс геометрии элемента; в противном случае сцена не будет знать о новой геометрии элемента, и результаты будут неопределенными (обычно остаются артефакты отрисовки в представлении).
Переопределите эту функцию, чтобы QGraphicsView определила, какие части виджета, если таковые имеются, необходимо перерисовать.
Примечание: Для фигур, которые рисуют контур/штрих, важно включить половину ширины пера в прямоугольник границ. Однако не нужно компенсировать антиалиасинг.
Пример:
QRectF CircleItem::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
diameter + penWidth, diameter + penWidth);
} См. также boundingRegion(), shape(), contains(), Систему координат графического представления и prepareGeometryChange().
QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const
Возвращает область границ для этого элемента. Координатное пространство возвращенной области зависит от itemToDeviceTransform. Если вы передаете единичное преобразование QTransform в качестве параметра, эта функция вернет область локальных координат.
Область границ описывает грубый контур визуального содержимого элемента. Хотя ее вычисление дорого, она также более точна, чем boundingRect(), и может помочь избежать ненужной перерисовки при обновлении элемента. Это особенно эффективно для тонких элементов (например, линий или простых полигонов). Вы можете настроить точность области границ, вызвав setBoundingRegionGranularity(). По умолчанию точность равна 0; в этом случае область границ элемента совпадает с его прямоугольником границ.
itemToDeviceTransform — преобразование от координат элемента к координатам устройства. Если вы хотите, чтобы эта функция возвращала QRegion в координатах сцены, вы можете передать sceneTransform() в качестве аргумента.
Эта функция была добавлена в Qt 4.4.
См. также boundingRegionGranularity().
qreal QGraphicsItem::boundingRegionGranularity() const
Возвращает точность области границ элемента; значение между и включая 0 и 1. Значение по умолчанию равно 0 (т. е. самая низкая точность, где область границ соответствует прямоугольнику границ элемента).
Эта функция была добавлена в Qt 4.4.
См. также setBoundingRegionGranularity().
QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const
Возвращает режим кэширования для этого элемента. Режим по умолчанию — NoCache (т. е. кеширование отключено, и вся отрисовка происходит немедленно).
Эта функция была добавлена в Qt 4.4.
См. также setCacheMode().
QList<QGraphicsItem *> QGraphicsItem::childItems() const
Возвращает список дочерних элементов этого элемента.
Элементы упорядочены по порядку стека. Это учитывает как порядок вставки элементов, так и их значения Z.
Эта функция была добавлена в Qt 4.4.
См. также setParentItem(), zValue() и Сортировка.
QRectF QGraphicsItem::childrenBoundingRect() const
Возвращает прямоугольник границ потомков этого элемента (т. е. его дочерних элементов, их дочерних элементов и т. д.) в локальных координатах. Прямоугольник будет содержать всех потомков после их отображения в локальных координатах. Если у элемента нет дочерних элементов, эта функция возвращает пустой QRectF.
Это не включает собственный прямоугольник границ этого элемента; он возвращает только скопированную область границ его потомков. Если вам нужно включить прямоугольник границ этого элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью QRectF::operator|().
Эта функция имеет линейную сложность; она определяет размер возвращаемого прямоугольника границ, перебирая всех потомков.
См. также boundingRect() и sceneBoundingRect().
void QGraphicsItem::clearFocus()
Убирает фокус ввода с клавиатуры с элемента.
Если у него есть фокус, этому элементу отправляется событие потери фокуса, чтобы сообщить ему, что он собирается его потерять.
Только элементы, установившие флаг ItemIsFocusable, или виджеты, установившие соответствующую политику фокуса, могут принимать фокус клавиатуры.
См. также setFocus(), hasFocus() и QGraphicsWidget::focusPolicy.
QPainterPath QGraphicsItem::clipPath() const
Возвращает путь обрезки этого элемента или пустой QPainterPath, если этот элемент не обрезан. Путь обрезки ограничивает внешний вид и взаимодействие элемента (т. е. ограничивает область, в которой элемент может рисоваться и получать события).
Вы можете включить обрезку, установив флаги ItemClipsToShape или ItemClipsChildrenToShape. Путь обрезки элемента вычисляется путем пересечения всех путей обрезки предков. Если элемент устанавливает ItemClipsToShape, окончательная обрезка пересекается с собственной формой элемента.
Примечание: Обрезка приводит к снижению производительности для всех участвующих элементов; в целом следует избегать использования обрезки, если можно (например, если ваши элементы всегда рисуются внутри boundingRect() или shape() границ, обрезка не требуется).
Эта функция была добавлена в Qt 4.5.
См. также isClipped(), shape() и setFlags().
[virtual] bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает true если этот элемент пересекается с other; в противном случае возвращает false.
Режим mode применяется к other, а полученная форма или ограничивающая прямоугольник затем сравниваются с формой этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape; other сталкивается с этим элементом, если он либо пересекает, либо содержит, либо содержится в форме этого элемента (см. Qt::ItemSelectionMode для получения подробностей).
Реализация по умолчанию основана на пересечении форм и вызывает shape() для обоих элементов. Поскольку сложность произвольного пересечения форм растет в порядке величины при сложных формах, эта операция может быть заметно затратной по времени. У вас есть возможность переопределить эту функцию в подклассе QGraphicsItem, чтобы предоставить пользовательский алгоритм. Это позволяет использовать естественные ограничения в формах собственных элементов для повышения производительности обнаружения столкновений. Например, столкновение двух не преобразованных идеально круговых элементов может быть определено очень эффективно путём сравнения их положений и радиусов.
Помните, что при переопределении этой функции и вызове shape() или boundingRect() для other, возвращаемые координаты должны быть отображены в системе координат этого элемента перед любым пересечением.
См. также contains() и shape().
[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает true , если этот элемент сталкивается с path.
Столкновение определяется mode. Значение по умолчанию для mode — Qt::IntersectsItemShape; path сталкивается с этим элементом, если он либо пересекает, либо содержит, либо содержится в форме этого элемента.
Обратите внимание, что эта функция проверяет, содержится ли форма или ограничивающая прямоугольник элемента (в зависимости от mode) внутри path, а не содержится ли path внутри формы или ограничивающего прямоугольника элементов.
См. также collidesWithItem(), contains() и shape().
QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает список всех элементов, которые сталкиваются с этим элементом.
Способ обнаружения столкновений определяется применением mode к элементам, которые сравниваются с этим элементом, т.е. форма или ограничивающий прямоугольник каждого элемента проверяется относительно формы этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape.
См. также collidesWithItem().
QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const
Возвращает ближайшего общего предка элемента и other, или 0, если other равен 0 или общего предка нет.
Эта функция была введена в Qt 4.4.
См. также isAncestorOf().
[virtual] bool QGraphicsItem::contains(const QPointF &point) const
Возвращает true , если этот элемент содержит point, которая находится в локальных координатах; в противном случае возвращается false. Чаще всего она вызывается из QGraphicsView, чтобы определить, какой элемент находится под курсором, и по этой причине реализация этой функции должна быть максимально быстрой.
По умолчанию эта функция вызывает shape(), но вы можете переопределить её в подклассе, чтобы предоставить (возможно, более эффективную) реализацию.
См. также shape(), boundingRect() и collidesWithPath().
[virtual protected] void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
Этот обработчик событий может быть переопределён в подклассе для обработки событий контекстного меню. Параметр event содержит подробности о событии, которое необходимо обработать.
Если вы игнорируете событие (т.е., вызвав QEvent::ignore()), event будет передан любому элементу под этим элементом. Если ни один элемент не примет событие, оно будет проигнорировано сценой и передано в представление.
Обычно при получении события контекстного меню открывается QMenu. Пример:
void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
QMenu menu;
QAction *removeAction = menu.addAction("Remove");
QAction *markAction = menu.addAction("Mark");
QAction *selectedAction = menu.exec(event->screenPos());
// ...
} Реализация по умолчанию игнорирует событие.
См. также sceneEvent().
QCursor QGraphicsItem::cursor() const
Возвращает текущую форму курсора для элемента. Курсор мыши примет эту форму, когда он находится над этим элементом. Список предопределённых объектов курсора см. в списке предопределённых объектов курсора.
Элемент редактора может использовать курсор в форме I-луча:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, используется курсор элемента под ним.
См. также setCursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
QVariant QGraphicsItem::data(int key) const
Возвращает пользовательские данные этого элемента для ключа key как QVariant.
Пользовательские данные элементов полезны для хранения произвольных свойств в любом элементе. Пример:
static const int ObjectName = 0;
QGraphicsItem *item = scene.itemAt(100, 50);
if (item->data(ObjectName).toString().isEmpty()) {
if (qgraphicsitem_cast<ButtonItem *>(item))
item->setData(ObjectName, "Button");
} Qt не использует эту функцию для хранения данных; она предоставлена только для удобства пользователя.
См. также setData().
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
Возвращает матрицу преобразования устройства этого элемента, используя viewportTransform для преобразования из координат сцены в координаты устройства. Эту матрицу можно использовать для отображения координат и геометрических форм из локальной системы координат этого элемента в систему координат представления (или любой другой системы координат устройства). Чтобы преобразовать координаты из представления, сначала необходимо инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // returns the item's (0, 0) point in view's viewport coordinates rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // returns view's viewport's (100, 100) coordinate in item coordinates
Эта функция такая же, как объединение преобразования сцены этого элемента с преобразованием представления, но она также понимает флаг ItemIgnoresTransformations. Преобразование устройства можно использовать для точного отображения координат (и обнаружения столкновений) для неизменяемых элементов.
Эта функция была введена в Qt 4.3.
См. также transform(), setTransform(), scenePos(), Система координат представления Graphics View и 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 (непрозрачный). Это значение представляет собой комбинацию локальной непрозрачности этого элемента и непрозрачности его родителя и предков. Эффективная непрозрачность определяет, как элемент будет отображён.
Эта функция была введена в Qt 4.5.
См. также opacity(), setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
void QGraphicsItem::ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
Если этот элемент является частью сцены, отображаемой с помощью QGraphicsView, эта вспомогательная функция попытается прокрутить представление, чтобы обеспечить видимость rect внутри области просмотра. Если rect является пустым прямоугольником (по умолчанию), QGraphicsItem использует прямоугольник ограничительной рамки элемента. xmargin и ymargin — количество пикселей, используемых для отступов.
Если указанный прямоугольник недоступен, содержимое прокручивается до ближайшей допустимой позиции.
Если этот элемент не отображается с помощью QGraphicsView, эта функция ничего не делает.
См. также QGraphicsView::ensureVisible().
void QGraphicsItem::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = ..., int ymargin = ...)
Эта вспомогательная функция эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
bool QGraphicsItem::filtersChildEvents() const
Возвращает true если этот элемент фильтрует события потомков (т.е., все события, предназначенные для любого из его потомков, вместо этого отправляются этому элементу); в противном случае возвращается false.
Значение по умолчанию — false; события потомков не фильтруются.
Эта функция была введена в Qt 4.6.
См. также setFiltersChildEvents().
QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const
Возвращает флаги этого элемента. Флаги описывают, какие настраиваемые функции элемента включены, а какие нет. Например, если флаги включают ItemIsFocusable, элемент может принимать фокус ввода.
По умолчанию, флаги не включены.
См. также setFlags() и setFlag().
[virtual protected] void QGraphicsItem::focusInEvent(QFocusEvent *event)
Этот обработчик событий для события event может быть переопределен для получения событий получения фокуса для этого элемента. Реализация по умолчанию вызывает ensureVisible().
См. также focusOutEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusItem() const
Если этот элемент, дочерний или потомок этого элемента, в настоящее время имеет фокус ввода, эта функция вернёт указатель на этот элемент. Если у потомка нет фокуса ввода, возвращается 0.
Эта функция была введена в Qt 4.6.
См. также hasFocus(), setFocus() и QWidget::focusWidget().
[virtual protected] void QGraphicsItem::focusOutEvent(QFocusEvent *event)
Этот обработчик событий для события event может быть переопределен для получения событий выхода из фокуса для этого элемента. Реализация по умолчанию ничего не делает.
См. также focusInEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusProxy() const
Возвращает прокси фокуса этого элемента или 0, если у этого элемента нет прокси фокуса.
Эта функция была введена в Qt 4.6.
См. также setFocusProxy(), setFocus() и hasFocus().
void QGraphicsItem::grabKeyboard()
Захватывает ввод с клавиатуры.
Элемент будет получать все ввод с клавиатуры в сцену до тех пор, пока не произойдёт одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabKeyboard()
- Другой элемент вызывает grabKeyboard(); элемент вернёт захват клавиатуры, когда другой элемент вызовет ungrabKeyboard().
Когда элемент получает захват клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет захват клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события могут быть использованы для определения того, когда ваш элемент получает или теряет захват клавиатуры другими способами, кроме получения фокуса ввода.
Практически никогда нет необходимости явным образом захватывать клавиатуру в Qt, так как Qt делает это разумно. В частности, Qt захватывает клавиатуру, когда ваш элемент получает фокус ввода, и отпускает её, когда ваш элемент теряет фокус ввода или когда элемент скрыт.
Обратите внимание, что только видимые элементы могут захватывать ввод с клавиатуры. Вызов grabKeyboard() на невидимом элементе не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
См. также ungrabKeyboard(), grabMouse() и setFocus().
void QGraphicsItem::grabMouse()
Захватывает ввод с мыши.
Этот элемент будет получать все события мыши для сцены до тех пор, пока не произойдёт одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabMouse()
- Другой элемент вызывает grabMouse(); элемент вернёт захват мыши, когда другой элемент вызовет ungrabMouse().
Когда элемент получает захват мыши, он получает событие QEvent::GrabMouse. Когда он теряет захват мыши, он получает событие QEvent::UngrabMouse. Эти события могут быть использованы для определения того, когда ваш элемент получает или теряет захват мыши другими способами, кроме получения событий нажатия клавиш мыши.
Практически никогда нет необходимости явным образом захватывать мышь в Qt, так как Qt делает это разумно. В частности, Qt захватывает мышь, когда вы нажимаете кнопку мыши, и удерживает захват мыши до тех пор, пока вы не отпустите последнюю кнопку мыши. Кроме того, виджеты Qt::Popup неявным образом вызывают grabMouse(), когда они отображаются, и ungrabMouse(), когда они скрыты.
Обратите внимание, что только видимые элементы могут захватывать ввод с мыши. Вызов grabMouse() на невидимом элементе не имеет эффекта.
События клавиатуры не затрагиваются.
См. также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().
QGraphicsEffect *QGraphicsItem::graphicsEffect() const
Возвращает указатель на эффект этого элемента, если он есть; в противном случае 0.
Эта функция была введена в Qt 4.6.
См. также setGraphicsEffect().
QGraphicsItemGroup *QGraphicsItem::group() const
Возвращает указатель на группу элементов этого элемента или 0, если этот элемент не является членом группы.
См. также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
END_OF_DOCUMENT_MARKER ```bool QGraphicsItem::hasCursor() const
Возвращает true , если для данного элемента установлен курсор; в противном случае возвращает false.
По умолчанию у элементов курсор не установлен. cursor() вернёт стандартный курсор-стрелку.
См. также unsetCursor().
bool QGraphicsItem::hasFocus() const
Возвращает true , если данный элемент активен, и у него или его заместителя фокуса есть фокус ввода с клавиатуры; в противном случае возвращает false.
См. также focusItem(), setFocus(), QGraphicsScene::setFocusItem(), и isActive().
void QGraphicsItem::hide()
Скрывает элемент (по умолчанию элементы видны).
Эта функция-удобство эквивалентна вызову setVisible(false).
См. также show() и setVisible().
[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Обработчик событий для события event может быть переопределен для получения событий входа в область наведения для данного элемента. По умолчанию выполняет update(); в противном случае ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() на event не имеет эффекта.
См. также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent(), и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Обработчик событий для события event может быть переопределён для получения событий выхода из области наведения для данного элемента. По умолчанию выполняет update(); в противном случае ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() на event не имеет эффекта.
См. также hoverEnterEvent(), hoverMoveEvent(), sceneEvent(), и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Обработчик событий для события event может быть переопределён для получения событий перемещения в области наведения для данного элемента. По умолчанию ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() на event не имеет эффекта.
См. также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent(), и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)
Обработчик событий для события event может быть переопределён для получения событий метода ввода для данного элемента. По умолчанию игнорирует событие.
См. также inputMethodQuery() и sceneEvent().
Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
Возвращает текущие подсказки метода ввода для данного элемента.
Подсказки метода ввода актуальны только для элементов ввода. Подсказки используются методом ввода, чтобы указать, как он должен работать. Например, если установлен флаг Qt::ImhNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только цифры.
Эффект может отличаться в разных реализациях методов ввода.
Эта функция была добавлена в Qt 4.6.
См. также setInputMethodHints() и inputMethodQuery().
[virtual protected] QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод актуален только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента, чтобы иметь возможность поддерживать сложные операции метода ввода, такие как поддержка окружающего текста и повторные преобразования. query указывает, какое свойство запрашивается.
См. также inputMethodEvent() и QInputMethodEvent.
void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)
Устанавливает фильтр событий для данного элемента на filterItem, заставляя все события для данного элемента сначала проходить через функцию sceneEventFilter() filterItem.
Чтобы отфильтровать события другого элемента, установите этот элемент в качестве фильтра событий для другого элемента. Пример:
QGraphicsScene scene; QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20)); QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20)); line->installSceneEventFilter(ellipse); // line's events are filtered by ellipse's sceneEventFilter() function. ellipse->installSceneEventFilter(line); // ellipse's events are filtered by line's sceneEventFilter() function.
Элемент может фильтровать события только для других элементов в той же сцене. Кроме того, элемент не может фильтровать свои собственные события; вместо этого вы можете напрямую переопределить sceneEvent().
Для установки и использования фильтров событий сцены элементы должны принадлежать сцене.
См. также removeSceneEventFilter(), sceneEventFilter(), и sceneEvent().
bool QGraphicsItem::isActive() const
Возвращает true , если данный элемент активен; в противном случае возвращает false.
Элемент может быть активным только если сцена активна. Элемент активен, если он или его потомок является активной панелью. Элементы в неактивных панелях не активны.
Элементы, которые не являются частью панели, следуют активации сцены, когда у сцены нет активной панели.
Только активные элементы могут получить фокус ввода.
Эта функция была добавлена в Qt 4.6.
См. также QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel(), и isPanel().
bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const
Возвращает true , если данный элемент является родителем child (то есть, если данный элемент является родителем child или одним из предков child).
См. также parentItem().
bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
Возвращает true , если данный элемент заблокирован модальной панелью; в противном случае false. Если blockingPanel не равен нулю, blockingPanel будет установлен на модальную панель, которая блокирует данный элемент. Если данный элемент не заблокирован, blockingPanel не будет установлен этой функцией.
Эта функция всегда возвращает false для элементов, не находящихся в сцене.
Эта функция была добавлена в Qt 4.6.
См. также panelModality(), setPanelModality(), и PanelModality.
bool QGraphicsItem::isClipped() const
Возвращает true , если данный элемент обрезан. Элемент обрезан, если установлен либо флаг ItemClipsToShape, либо он или какой-либо из его предков установили флаг ItemClipsChildrenToShape.
Обрезка влияет на отображение элемента (т. е. отрисовку), а также на доставку событий мыши и наведения.
См. также clipPath(), shape(), и setFlags().
bool QGraphicsItem::isEnabled() const
Возвращает true , если элемент включен; в противном случае возвращает false.
См. также setEnabled().
bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const
Это перегруженная функция.
Возвращает true , если rect полностью скрыта непрозрачной формой любого из пересекающихся элементов над ним (т. е. с более высоким значением Z, чем у этого элемента).
Эта функция была добавлена в Qt 4.3.
См. также opaqueArea().
bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const
Это перегруженная функция.
Эта функция-удобство эквивалентна вызову isObscured(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
[virtual] bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const
Возвращает true если прямоугольник области отображения данного элемента полностью скрыт непрозрачной формой элемента item.
Базовая реализация отображает непрозрачную область (item's opaqueArea() в систему координат этого элемента, а затем проверяет, полностью ли прямоугольник области отображения (this item's boundingRect()) содержится в отображённой форме.
Вы можете переопределить эту функцию, чтобы использовать собственный алгоритм для определения, скрыт ли данный элемент элементом item.
См. также opaqueArea() и isObscured().
bool QGraphicsItem::isPanel() const
Возвращает true если элемент является панелью; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.6.
См. также QGraphicsItem::panel() и ItemIsPanel.
bool QGraphicsItem::isSelected() const
Возвращает true если данный элемент выбран; в противном случае возвращается false.
Элементы, находящиеся в группе, наследуют состояние выбора группы.
Элементы по умолчанию не выбраны.
См. также setSelected() и QGraphicsScene::setSelectionArea().
bool QGraphicsItem::isUnderMouse() const
Возвращает true если данный элемент находится под курсором мыши в одном из представлений; в противном случае возвращается false.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsScene::views() и QCursor::pos().
bool QGraphicsItem::isVisible() const
Возвращает true если элемент видим; в противном случае возвращается false.
Обратите внимание, что общая видимость элемента не связана с тем, визуализируется ли он в действительности QGraphicsView.
См. также setVisible().
bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const
Возвращает true если элемент видим для parent; в противном случае возвращается false. parent может быть 0, в этом случае функция вернёт, видим ли элемент для сцены.
Элемент может быть невидим для своих предков, даже если isVisible() равно true. Он также может быть видим для своих предков, даже если isVisible() равно false. Если какой-либо предок скрыт, сам элемент будет неявным образом скрыт, и функция вернёт false.
Эта функция была добавлена в Qt 4.4.
См. также isVisible() и setVisible().
bool QGraphicsItem::isWidget() const
Возвращает true если этот элемент является виджетом (т.е. QGraphicsWidget); в противном случае возвращает false.
Эта функция была добавлена в Qt 4.4.
bool QGraphicsItem::isWindow() const
Возвращает true если элемент является окном виджета QGraphicsWidget, в противном случае возвращает false.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsWidget::windowFlags().
[virtual protected] QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
Этот виртуальный метод вызывается QGraphicsItem для уведомления пользовательских элементов о том, что изменилась какая-то часть их состояния. Переопределив этот метод, вы можете отреагировать на изменение, и в некоторых случаях (в зависимости от change) внести корректировки.
change — параметр изменяемого элемента. value — новое значение; тип значения зависит от change.
Пример:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
QPointF newPos = value.toPointF();
QRectF rect = scene()->sceneRect();
if (!rect.contains(newPos)) {
// Keep the item inside the scene rect.
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
} По умолчанию реализация ничего не делает и возвращает value.
Примечание: Некоторые функции QGraphicsItem не могут быть вызваны в переопределении этого метода; см. документацию к GraphicsItemChange для получения подробной информации.
См. также GraphicsItemChange.
QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
Возвращает QTransform, который преобразует координаты из системы координат данного элемента в систему координат other. Если ok не равен null, и такого преобразования не существует, булево значение, на которое указывает ok, будет установлено в false; в противном случае оно будет установлено в true.
Это преобразование предоставляет альтернативу функциям mapToItem() или mapFromItem(), возвращая соответствующее преобразование, чтобы вы могли самостоятельно преобразовывать фигуры и координаты. Это также помогает писать более эффективный код при многократном преобразовании между теми же двумя элементами.
Примечание: В редких случаях нет преобразования, которое может преобразовать координаты между двумя элементами.
Эта функция была добавлена в Qt 4.5.
См. также mapToItem(), mapFromItem() и deviceTransform().
[virtual protected] void QGraphicsItem::keyPressEvent(QKeyEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий нажатия клавиш для данного элемента. По умолчанию обработчик игнорирует событие. Если вы переопределяете этот обработчик, событие по умолчанию будет принято.
Обратите внимание, что события нажатия клавиш принимаются только для элементов, для которых установлен флаг ItemIsFocusable, и у которых есть фокус клавиатуры.
См. также keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
[virtual protected] void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий отпускания клавиш для данного элемента. По умолчанию обработчик игнорирует событие. Если вы переопределяете этот обработчик, событие по умолчанию будет принято.
Обратите внимание, что события нажатия клавиш принимаются только для элементов, для которых установлен флаг ItemIsFocusable, и у которых есть фокус клавиатуры.
См. также keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const
Преобразует точку point, которая находится в системе координат item, в систему координат данного элемента и возвращает преобразованную координату.
Если item равен 0, эта функция возвращает то же, что и mapFromScene().
См. также itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() и Систему координат графического представления.
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, который находится в системе координат item, в систему координат данного элемента и возвращает преобразованный прямоугольник в виде многоугольника.
Если item равен 0, эта функция возвращает то же, что и mapFromScene()
См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Систему координат графического представления.
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
Преобразует многоугольник polygon, который находится в системе координат item, в систему координат данного элемента и возвращает преобразованный многоугольник.
Если item равен 0, эта функция возвращает то же, что и mapFromScene().
См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Систему координат графического представления.
QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
Преобразует путь path, который находится в системе координат item, в систему координат данного элемента и возвращает преобразованный путь.
Если item равен 0, эта функция возвращает то же, что и 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)).
Эта функция была добавлена в Qt 4.3.
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)).
Эта функция была добавлена в Qt 4.3.
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)).
Эта функция была добавлена в Qt 4.3.
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, который находится в системе координат элемента item, в систему координат этого элемента и возвращает преобразованный прямоугольник как новый прямоугольник (т.е., ограничивающий прямоугольник результирующего многоугольника).
Если item равен 0, эта функция возвращает то же, что и mapRectFromScene().
Эта функция была добавлена в Qt 4.5.
См. также 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)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const
Преобразует прямоугольник rect, который задан в системе координат родительского элемента, в систему координат этого элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapRectFromParent(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в координатах сцены, в систему координат этого элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapRectFromScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).
Если item равен 0, эта функция возвращает то же, что и mapRectToScene().
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapRectToItem(item, QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат родительского элемента и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapRectToParent(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат сцены и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученной фигуры).
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapRectToScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const
Преобразует точку point, заданную в системе координат этого элемента, в систему координат элемента item и возвращает преобразованную координату.
Если item равен 0, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный прямоугольник в виде многоугольника.
Если item равен 0, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный многоугольник.
Если item равен 0, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
Преобразует путь path, заданный в системе координат этого элемента, в систему координат элемента item и возвращает преобразованный путь.
Если item равен 0, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат Graphics View.
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
Это перегруженный метод.
Эта функция-удобство эквивалентна вызову mapToItem(item, QPointF(x, y)).
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
Эта функция-удобство эквивалентна вызову mapToItem(item, QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapToParent(const QPointF &point) const
Преобразует точку point, которая находится в системе координат этого элемента, в систему координат его родительского элемента и возвращает преобразованные координаты. Если у элемента нет родителя, point будет преобразована в систему координат сцены.
См. также mapToItem(), mapToScene(), transform(), mapFromParent(), и Систему координат Graphics View.
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
Преобразует прямоугольник rect, который находится в системе координат этого элемента, в систему координат его родительского элемента и возвращает преобразованный прямоугольник в виде многоугольника. Если у элемента нет родителя, rect будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent(), и Систему координат Graphics View.
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
Преобразует многоугольник polygon, который находится в системе координат этого элемента, в систему координат его родительского элемента и возвращает преобразованный многоугольник. Если у элемента нет родителя, polygon будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent(), и Систему координат Graphics View.
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
Преобразует путь path, который находится в системе координат этого элемента, в систему координат его родительского элемента и возвращает преобразованный путь. Если у элемента нет родителя, path будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent(), и Систему координат Graphics View.
QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const
Это перегруженный метод.
Эта функция-удобство эквивалентна вызову mapToParent(QPointF(x, y)).
QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const
Эта функция-удобство эквивалентна вызову mapToParent(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapToScene(const QPointF &point) const
Преобразует точку point, которая находится в системе координат этого элемента, в систему координат сцены и возвращает преобразованную координату.
См. также mapToItem(), mapToParent(), transform(), mapFromScene(), и Систему координат Graphics View.
QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const
Преобразует прямоугольник rect, который находится в системе координат этого элемента, в систему координат сцены и возвращает преобразованный прямоугольник в виде многоугольника.
См. также mapToParent(), mapToItem(), mapFromScene(), и Систему координат Graphics View.
QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const
Преобразует многоугольник polygon, который находится в системе координат этого элемента, в систему координат сцены и возвращает преобразованный многоугольник.
См. также mapToParent(), mapToItem(), mapFromScene(), и Систему координат Graphics View.
QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const
Преобразует путь path, который находится в системе координат этого элемента, в систему координат сцены и возвращает преобразованный путь.
См. также mapToParent(), mapToItem(), mapFromScene(), и Систему координат Graphics View.
QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const
Это перегруженный метод.
Эта функция-удобство эквивалентна вызову mapToScene(QPointF(x, y)).
QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const
Эта функция-удобство эквивалентна вызову mapToScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
[virtual protected] void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий для события event можно переопределить для получения событий двойного щелчка мыши для этого элемента.
При двойном щелчке по элементу элемент сначала получит событие нажатия мыши, за которым последуют события отпускания (т.е. щелчок), затем событие двойного щелчка и, наконец, событие отпускания.
Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.
По умолчанию вызывается mousePressEvent(). Если при переопределении этой функции нужно сохранить базовую реализацию, в переопределении вызовите QGraphicsItem::mouseDoubleClickEvent().
Обратите внимание, что элемент не получит события двойного щелчка, если он не является выбираемым и не перемещаемым (в этом случае одиночные щелчки игнорируются, что останавливает генерацию двойных щелчков).
См. также mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), и sceneEvent().
[virtual protected] void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Обработчик событий для события event можно переопределить, чтобы получать события перемещения мыши для данного элемента. Если вы получаете это событие, вы можете быть уверены, что этот элемент также получил событие нажатия мыши, и что этот элемент является текущим захватом мыши.
Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.
По умолчанию реализация обрабатывает основные взаимодействия с элементом, такие как выделение и перемещение. Если при переопределении функции вы хотите сохранить базовую реализацию, вызовите QGraphicsItem::mouseMoveEvent() в своём переопределении.
Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. Подробности см. в описании mousePressEvent().
См. также mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
Обработчик событий для события event можно переопределить, чтобы получать события нажатия мыши для этого элемента. События нажатия мыши доставляются только тем элементам, которые принимают нажатую кнопку мыши. По умолчанию элемент принимает все кнопки мыши, но вы можете изменить это, вызвав setAcceptedMouseButtons().
Событие нажатия мыши определяет, какой элемент должен стать захватом мыши (см. QGraphicsScene::mouseGrabberItem()). Если вы не переопределите эту функцию, событие нажатия будет распространяться на любой верхний элемент под этим элементом, и никакие другие события мыши не будут доставлены этому элементу.
Если вы переопределите эту функцию, по умолчанию event будет принят (см. QEvent::accept()), и этот элемент станет захватом мыши. Это позволит элементу получать будущие события перемещения, отпускания и двойного щелчка. Если вы вызовите QEvent::ignore() для event, этот элемент потеряет захват мыши, а event будет распространяться на любой верхний элемент под ним. Дальнейшие события мыши не будут доставлены этому элементу, пока не будет получено новое событие нажатия мыши.
По умолчанию реализация обрабатывает основные взаимодействия с элементом, такие как выделение и перемещение. Если при переопределении функции вы хотите сохранить базовую реализацию, вызовите QGraphicsItem::mousePressEvent() в своём переопределении.
Событие игнорируется для элементов, которые не являются ни перемещаемыми, ни выделяемыми.
См. также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Обработчик событий для события event можно переопределить, чтобы получать события отпускания мыши для этого элемента.
Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.
По умолчанию реализация обрабатывает основные взаимодействия с элементом, такие как выделение и перемещение. Если при переопределении функции вы хотите сохранить базовую реализацию, вызовите QGraphicsItem::mouseReleaseEvent() в своём переопределении.
Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. Подробности см. в описании mousePressEvent().
См. также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().
void QGraphicsItem::moveBy(qreal dx, qreal dy)
Перемещает элемент на dx единиц по горизонтали и dy единиц по вертикали. Эта функция эквивалентна вызову setPos(pos() + QPointF(dx, dy)).
qreal QGraphicsItem::opacity() const
Возвращает локальную непрозрачность этого элемента, которая находится в диапазоне от 0.0 (прозрачный) до 1.0 (непрозрачный). Это значение комбинируется с родительскими и предками в effectiveOpacity(). Эффективная непрозрачность определяет, как элемент отображается, а также влияет на его видимость при запросе функциями, такими как QGraphicsView::items().
Свойство непрозрачности определяет состояние художника, переданного в функцию paint(). Если элемент кэшируется, т.е. ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отображении.
По умолчанию непрозрачность равна 1.0; полностью непрозрачный.
Эта функция была добавлена в Qt 4.5.
См. также setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
[virtual] QPainterPath QGraphicsItem::opaqueArea() const
Эта виртуальная функция возвращает фигуру, представляющую область, где этот элемент непрозрачен. Область непрозрачна, если она заполнена непрозрачной кистью или цветом (т.е. не прозрачна).
Эта функция используется функцией isObscuredBy(), которая вызывается подлежащими элементами для определения, скрыт ли этот элемент данным элементом.
По умолчанию реализация возвращает пустой QPainterPath, указывая, что этот элемент полностью прозрачен и не скрывает другие элементы.
См. также isObscuredBy(), isObscured() и shape().
[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...)
Эта функция, обычно вызываемая QGraphicsView, отрисовывает содержимое элемента в локальных координатах.
Переопределите эту функцию в подклассе QGraphicsItem, чтобы предоставить реализацию отрисовки элемента, используя painter. Параметр option предоставляет параметры стиля для элемента, такие как его состояние, видимая область и подсказки уровня детализации. Аргумент widget необязательный. Если он задан, он указывает на виджет, на котором производится отрисовка; в противном случае он равен 0. Для кэшированной отрисовки widget всегда равен 0.
void RoundRectItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
} Перо художника по умолчанию имеет ширину 0, а его кисть инициализируется кистью QPalette::Text из палитры устройства отрисовки. Кисть инициализируется значением QPalette::Window.
Убедитесь, что вся отрисовка выполняется внутри границ boundingRect(), чтобы избежать артефактов отрисовки (поскольку QGraphicsView не обрезает художника за вас). В частности, когда QPainter отрисовывает контур фигуры с помощью назначенного QPen, половина контура будет нарисована снаружи, а половина внутри фигуры, которую вы рисуете (например, с шириной пера 2 единицы, вы должны нарисовать контуры на 1 единицу внутри boundingRect()). QGraphicsItem не поддерживает использование декоративных перьев с ненулевой шириной.
Вся отрисовка выполняется в локальных координатах.
Примечание: Элемент всегда должен перерисовывать себя таким же образом, если только не был вызван update(); в противном случае могут возникнуть визуальные артефакты. Другими словами, два последующих вызова paint() должны всегда производить один и тот же результат, если между ними не был вызван update().
Примечание: Включение кэширования для элемента не гарантирует, что paint() будет вызываться только один раз системой отображения графики, даже без явного вызова update(). Подробности см. в документации к setCacheMode().
См. также setCacheMode(), QPen::width(), Координаты элементов и ItemUsesExtendedStyleOption.
QGraphicsItem *QGraphicsItem::panel() const
Возвращает панель элемента или 0, если у этого элемента нет панели. Если элемент является панелью, он вернет себя. В противном случае он вернет ближайшего предка, который является панелью.
Эта функция была добавлена в Qt 4.6.
См. также isPanel() и ItemIsPanel.
QGraphicsItem::PanelModality QGraphicsItem::panelModality() const
Возвращает режим для этого элемента.
Эта функция была добавлена в Qt 4.6.
См. также setPanelModality().
QGraphicsItem *QGraphicsItem::parentItem() const
Возвращает указатель на родительский элемент этого элемента. Если у этого элемента нет родителя, возвращается 0.
См. также setParentItem() и childItems().
QGraphicsObject *QGraphicsItem::parentObject() const
Возвращает указатель на родительский элемент, приведённый к типу QGraphicsObject. Возвращает 0, если родительский элемент не является QGraphicsObject.
Эта функция была добавлена в Qt 4.6.
См. также parentItem() и childItems().
QGraphicsWidget *QGraphicsItem::parentWidget() const
Возвращает указатель на виджет-родитель элемента. Виджет-родитель — это ближайший родительский элемент, являющийся виджетом.
Эта функция была добавлена в Qt 4.4.
См. также parentItem() и childItems().
QPointF QGraphicsItem::pos() const
Возвращает положение элемента в координатах родителя. Если у элемента нет родителя, его положение задаётся в координатах сцены.
Положение элемента описывает его начало (локальные координаты (0, 0)) в координатах родителя; эта функция возвращает то же значение, что и mapToParent(0, 0).
Для удобства вы также можете вызвать scenePos(), чтобы определить положение элемента в координатах сцены независимо от его родителя.
См. также x(), y(), setPos(), transform() и Система координат графического представления.
[protected] void QGraphicsItem::prepareGeometryChange()
Подготавливает элемент к изменению геометрии. Вызовите эту функцию перед изменением ограничивающей прямоугольной области элемента, чтобы сохранить актуальность индекса QGraphicsScene.
prepareGeometryChange() вызовет update(), если это необходимо.
Пример:
void CircleItem::setRadius(qreal newRadius)
{
if (radius != newRadius) {
prepareGeometryChange();
radius = newRadius;
}
} См. также boundingRect().
void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)
Удаляет обработчик событий для этого элемента из filterItem.
См. также installSceneEventFilter().
void QGraphicsItem::resetTransform()
Сбрасывает матрицу преобразования этого элемента на единичную матрицу или все свойства преобразования на их значения по умолчанию. Это эквивалентно вызову setTransform(QTransform()).
Эта функция была добавлена в Qt 4.3.
См. также setTransform() и transform().
qreal QGraphicsItem::rotation() const
Возвращает угол поворота по часовой стрелке вокруг оси Z в градусах. Значение по умолчанию — 0 (т.е. элемент не повернут).
Поворот комбинируется с масштабированием scale(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента в системе координат родительского элемента.
Эта функция была добавлена в Qt 4.6.
См. также setRotation(), transformOriginPoint() и Преобразования.
qreal QGraphicsItem::scale() const
Возвращает коэффициент масштабирования элемента. Коэффициент масштабирования по умолчанию — 1.0 (т.е. элемент не масштабирован).
Масштабирование комбинируется с поворотом rotation(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента в системе координат родительского элемента.
Эта функция была добавлена в Qt 4.6.
См. также setScale(), rotation() и Преобразования.
QGraphicsScene *QGraphicsItem::scene() const
Возвращает текущую сцену для элемента или 0, если элемент не хранится в сцене.
Чтобы добавить или переместить элемент в сцену, вызовите QGraphicsScene::addItem().
QRectF QGraphicsItem::sceneBoundingRect() const
Возвращает ограничивающую прямоугольную область этого элемента в координатах сцены, комбинируя sceneTransform() и boundingRect().
См. также boundingRect() и Система координат графического представления.
[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)
Этот виртуальный метод получает события для этого элемента. Переопределите этот метод, чтобы перехватывать события перед их отправкой специализированным обработчикам событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().
Возвращает true если событие было распознано и обработано; в противном случае (например, если тип события не был распознан) возвращается false.
event — это перехваченное событие.
[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
Фильтры событий для элемента watched. event — это отфильтрованное событие.
Переопределение этого метода в подклассе позволяет использовать элемент в качестве фильтра событий для других элементов, перехватывая все события, отправленные этим элементам, прежде чем они смогут на них отреагировать.
Переопределения должны возвращать true, чтобы предотвратить дальнейшую обработку данного события, гарантируя, что оно не будет передано наблюдаемому элементу, или возвращать false, чтобы указать, что событие должно быть распространено дальше системой событий.
См. также installSceneEventFilter().
QPointF QGraphicsItem::scenePos() const
Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).
См. также pos(), sceneTransform() и Система координат графического представления.
QTransform QGraphicsItem::sceneTransform() const
Возвращает матрицу преобразования сцены этого элемента. Эта матрица может использоваться для преобразования координат и геометрических фигур из локальной системы координат этого элемента в систему координат сцены. Для преобразования координат из сцены необходимо сначала инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // returns QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // returns QPointF(0, 0);
В отличие от transform(), которая возвращает только локальное преобразование элемента, эта функция включает положение элемента (и всех его родителей) и все свойства преобразования.
Эта функция была добавлена в Qt 4.3.
См. также transform(), setTransform(), scenePos(), Система координат графического представления и Преобразования.
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
Прокручивает содержимое rect на dx, dy. Если rect — пустая прямоугольная область (значение по умолчанию), прокручивается ограничивающая прямоугольная область элемента.
Прокрутка предоставляет быструю альтернативу простому перерисовыванию, когда содержимое элемента (или части элемента) сдвигается вертикально или горизонтально. В зависимости от текущего преобразования и возможностей устройства рисования (т.е. области просмотра) эта операция может состоять из простого перемещения пикселей из одного места в другое с использованием memmove(). В большинстве случаев это быстрее, чем перерисовка всего региона.
После прокрутки элемент вызовет обновление для вновь открытых областей. Если прокрутка не поддерживается (например, вы рисуете в области просмотра OpenGL, которая не выигрывает от оптимизаций прокрутки), эта функция эквивалентна вызову update(rect).
Примечание: Прокрутка поддерживается только при включённом QGraphicsItem::ItemCoordinateCache; во всех остальных случаях вызов этой функции эквивалентен вызову update(rect). Если вы точно знаете, что элемент непрозрачен и не перекрывается другими элементами, вы можете преобразовать rect в координаты области просмотра и прокрутить область просмотра.
QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect);
Эта функция была добавлена в Qt 4.4.
См. также boundingRect().
void QGraphicsItem::setAcceptDrops(bool on)
Если on истинно, этот элемент будет принимать события перетаскивания; в противном случае он прозрачен для событий перетаскивания. По умолчанию элементы не принимают события перетаскивания.
См. также acceptDrops().
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события наведения курсора; в противном случае, он будет их игнорировать. По умолчанию элементы не принимают события наведения курсора.
События наведения курсора доставляются, когда нет текущего элемента захвата мыши. Они отправляются, когда курсор мыши входит в элемент, когда он перемещается внутри элемента и когда курсор выходит из элемента. События наведения курсора обычно используются для выделения элемента при входе в него и для отслеживания курсора мыши при наведении на элемент (эквивалентно QWidget::mouseTracking).
Родительские элементы получают события входа наведения курсора до своих дочерних элементов, а события выхода — после. Однако родительский элемент не получает события выхода наведения курсора, если курсор входит в дочерний элемент; родительский элемент остается «наведенным» до тех пор, пока курсор не покинет его область, включая области своих дочерних элементов.
Если родительский элемент обрабатывает события дочерних элементов, он получит события перемещения наведения, перемещения при перетаскивании и события опускания, когда курсор проходит через своих дочерних элементов, но не получит события входа наведения и выхода наведения, а также события входа при перетаскивании и выхода при перетаскивании от имени своих дочерних элементов.
QGraphicsWidget с декорациями окна будет принимать события наведения курсора независимо от значения acceptHoverEvents().
Эта функция была введена в Qt 4.4.
См. также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события касания; в противном случае, он будет их игнорировать. По умолчанию элементы не принимают события касания.
Эта функция была введена в Qt 4.6.
См. также acceptTouchEvents().
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
Устанавливает те кнопки мыши buttons, для которых этот элемент принимает события мыши.
По умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он становится элементом захвата мыши, когда для этой кнопки передается событие нажатия мыши. Однако, если элемент не принимает кнопку мыши, QGraphicsScene перенаправит события мыши первому элементу под ним, который это сделает.
Чтобы отключить события мыши для элемента (т.е., сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
См. также acceptedMouseButtons() и mousePressEvent().
void QGraphicsItem::setActive(bool active)
Если active имеет значение true, и сцена активна, панель этого элемента будет активирована. В противном случае панель деактивируется.
Если элемент не является частью активной сцены, active определит, что произойдет с панелью, когда сцена станет активной или элемент будет добавлен в сцену. Если значение true, панель элемента будет активирована, когда элемент либо добавлен в сцену, либо сцена активирована. В противном случае элемент останется неактивным независимо от состояния активации сцены.
Эта функция была введена в Qt 4.6.
См. также isPanel(), QGraphicsScene::setActivePanel() и QGraphicsScene::isActive().
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
Устанавливает гранулярность области ограничивающей области до granularity; значение от 0 до 1 включительно. Значение по умолчанию — 0 (т. е. наименьшая гранулярность, где область ограничивающей области соответствует прямоугольнику ограничивающей области элемента).
Гранулярность используется функцией boundingRegion() для расчета того, насколько точной должна быть область ограничивающей области элемента. Наибольшая достижимая гранулярность — 1, где boundingRegion() вернет наиболее точную контурную линию, возможную для соответствующего устройства (например, для QGraphicsView viewport это даёт вам пиксельно точную область ограничивающей области). Наименьшая возможная гранулярность — 0. Значение granularity описывает отношение между разрешением устройства и разрешением области ограничивающей области (например, значение 0,25 обеспечит область, где каждый фрагмент соответствует 4x4 единицам/пикселям устройства).
Эта функция была введена в Qt 4.4.
См. также boundingRegionGranularity().
void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
Устанавливает режим кэширования элемента до mode.
Необязательный аргумент logicalCacheSize используется только режимом ItemCoordinateCache и описывает разрешение буфера кэша; если logicalCacheSize равно (100, 100), QGraphicsItem поместит элемент в 100x100 пикселей в графической памяти, независимо от логического размера самого элемента. По умолчанию QGraphicsItem использует размер boundingRect(). Для всех режимов кэширования, кроме ItemCoordinateCache, logicalCacheSize игнорируется.
Кэширование может ускорить отрисовку, если ваш элемент тратит значительное время на перерисовку. В некоторых случаях кэш также может замедлить отрисовку, особенно когда элемент тратит меньше времени на перерисовку, чем QGraphicsItem тратит на перерисовку из кэша.
При включенном кэшировании функция paint() элемента, как правило, рисует в кэше офскрин-пиктограммы; при последующих запросах перерисовки фреймворк Graphics View будет перерисовывать из кэша. Этот подход особенно хорошо работает с QGLWidget, который хранит весь кэш в виде текстур OpenGL.
Обратите внимание, что может потребоваться изменить предел кэша QPixmapCache для достижения оптимальной производительности.
Подробнее о различных режимах кэширования вы можете прочитать в документации CacheMode.
Примечание: Включение кэширования не означает, что функция paint() элемента будет вызываться только в ответ на явный вызов update(). Например, при недостатке памяти Qt может принять решение об отбрасывании некоторых данных кэша; в таких случаях функция paint() элемента будет вызываться даже если не было вызова update() (то есть, точно так же, как если бы кэширование не было включено).
Эта функция была введена в Qt 4.4.
См. также cacheMode(), CacheMode и QPixmapCache::setCacheLimit().
void QGraphicsItem::setCursor(const QCursor &cursor)
Устанавливает текущую форму курсора для элемента в cursor. Курсор мыши примет эту форму, когда он будет над этим элементом. Список предопределенных объектов курсора см. в списке предопределенных объектов курсора.
Элемент редактора может использовать курсор в виде лучеобразного указателя:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, используется курсор элемента под ним.
См. также cursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
void QGraphicsItem::setData(int key, const QVariant &value)
Устанавливает пользовательские данные этого элемента для ключа key в value.
Пользовательские данные элемента полезны для хранения произвольных свойств для любого элемента. Qt не использует эту функцию для хранения данных; она предоставляется только для удобства пользователя.
См. также data().
void QGraphicsItem::setEnabled(bool enabled)
Если enabled имеет значение true, элемент активирован; в противном случае, он отключен.
Отключенные элементы видимы, но они не получают никаких событий, не могут получить фокус и не могут быть выделены. События мыши отбрасываются; они не распространяются, если элемент также невидим или не принимает события мыши (см. acceptedMouseButtons()). Отключенный элемент не может стать захватом мыши, и в результате этого элемент теряет захват, если он становится отключённым при захвате мыши, так же, как он теряет фокус, если у него был фокус при отключении.
Отключенные элементы традиционно рисуются с использованием серых цветов (см. QPalette::Disabled).
Если вы отключаете родительский элемент, все его дочерние элементы также будут отключены. Если вы включаете родительский элемент, все дочерние элементы будут включены, если они не были явно отключены (т. е., если вы вызываете setEnabled(false) для дочернего элемента, он не будет повторно включен, если его родительский элемент отключен, а затем снова включён).
Элементы включены по умолчанию.
Примечание: Если вы устанавливаете фильтр событий, вы по-прежнему можете перехватывать события до их доставки элементам; этот механизм игнорирует состояние включения элемента.
См. также isEnabled().
void QGraphicsItem::setFiltersChildEvents(bool enabled)
Если enabled имеет значение true, этот элемент настроен на фильтрацию всех событий для всех его дочерних элементов (т. е., все события, предназначенные для любого из его дочерних элементов, вместо этого отправляются этому элементу); в противном случае, если enabled имеет значение false, этот элемент будет обрабатывать только свои собственные события. Значение по умолчанию — false.
Эта функция была введена в Qt 4.6.
См. также filtersChildEvents().
void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
Если enabled имеет значение true, флаг элемента flag включен; в противном случае, он отключен.
См. также flags() и setFlags().
void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)
Устанавливает флаги элемента на flags. Все флаги в flags будут включены; все флаги, отсутствующие в flags, будут отключены.
Если у элемента был фокус и flags не включает ItemIsFocusable, элемент потеряет фокус в результате вызова этой функции. Аналогично, если элемент был выбран, а flags не включает ItemIsSelectable, элемент автоматически будет снят с выбора.
По умолчанию, ни один флаг не включен. (QGraphicsWidget по умолчанию включает флаг ItemSendsGeometryChanges, чтобы отслеживать изменения позиции.)
См. также flags() и setFlag().
void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
Передает фокус ввода с клавиатуры этому элементу. Аргумент focusReason будет передан в любой событие фокуса, сгенерированное этой функцией; он используется для объяснения причины того, почему элемент получил фокус.
Только включенные элементы, установившие флаг ItemIsFocusable, могут принимать фокус клавиатуры.
Если этот элемент не виден, не активен или не ассоциирован со сценой, он не получит фокус ввода немедленно. Однако он будет зарегистрирован как предпочтительный элемент фокуса для своего поддерева элементов, если он станет видимым позже.
В результате вызова этой функции этот элемент получит событие focus in event с focusReason. Если другой элемент уже имеет фокус, этот элемент сначала получит focus out event, указывающее, что он потерял фокус ввода.
См. также clearFocus(), hasFocus(), focusItem() и focusProxy().
void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
Устанавливает прокси фокуса элемента на item.
Если у элемента есть прокси фокуса, прокси фокуса получит фокус ввода, когда элемент получает фокус ввода. Сам элемент по-прежнему будет иметь фокус (т.е., hasFocus() вернёт true), но только прокси фокуса получит ввод с клавиатуры.
Прокси фокуса может сам иметь прокси фокуса, и так далее. В таком случае ввод с клавиатуры будет обрабатываться внешним прокси фокуса.
Прокси фокуса item должен принадлежать той же сцене, что и этот элемент.
Эта функция была введена в Qt 4.6.
См. также focusProxy(), setFocus() и hasFocus().
void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)
Устанавливает effect в качестве эффекта элемента. Если на этом элементе уже установлен эффект, QGraphicsItem удалит существующий эффект перед установкой нового effect. Вы можете удалить существующий эффект, вызвав setGraphicsEffect(0).
Если effect является установленным эффектом на другом элементе, setGraphicsEffect() удалит эффект из элемента и установит его на этот элемент.
QGraphicsItem принимает владение effect.
Примечание: Эта функция применит эффект к себе и всем его дочерним элементам.
Эта функция была введена в Qt 4.6.
См. также graphicsEffect().
void QGraphicsItem::setGroup(QGraphicsItemGroup *group)
Добавляет этот элемент в группу элементов group. Если group равен 0, этот элемент удаляется из любой текущей группы и добавляется как дочерний к родительскому элементу предыдущей группы.
См. также group() и QGraphicsScene::createItemGroup().
void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
Устанавливает текущие подсказки метода ввода для этого элемента на hints.
Эта функция была введена в Qt 4.6.
См. также inputMethodHints() и inputMethodQuery().
void QGraphicsItem::setOpacity(qreal opacity)
Устанавливает локальную opacity этого элемента, между 0.0 (прозрачный) и 1.0 (непрозрачный). Локальная непрозрачность элемента объединяется с непрозрачностями родительского элемента и предков в effectiveOpacity().
По умолчанию, непрозрачность распространяется сверху вниз, так что если непрозрачность родителя равна 0,5, а ребёнка тоже 0,5, эффективная непрозрачность ребёнка будет 0,25.
Свойство непрозрачности определяет состояние художника, переданного в функцию paint(). Если элемент кэшируется, т.е. ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отрисовке.
Существует два флага элементов, которые влияют на то, как непрозрачность элемента объединяется с родительским элементом: ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
Примечание: Установка непрозрачности элемента в 0 не сделает элемент невидимым (согласно isVisible()), но элемент будет обрабатываться как невидимый. Смотрите документацию setVisible() для получения дополнительной информации.
Эта функция была введена в Qt 4.5.
См. также opacity(), effectiveOpacity() и setVisible().
void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)
Устанавливает модальный режим этого элемента на panelModality.
Изменение модальности видимого элемента вступает в силу немедленно.
Эта функция была введена в Qt 4.6.
См. также panelModality().
void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
Устанавливает родительский элемент этого элемента на newParent. Если у этого элемента уже есть родитель, он сначала удаляется из предыдущего родителя. Если newParent равен 0, этот элемент станет элементом верхнего уровня.
Обратите внимание, что это неявно добавляет этот графический элемент в сцену родителя. Вы не должны добавлять элемент в сцену самостоятельно.
Поведение при вызове этой функции для элемента, являющегося предком newParent, не определено.
См. также parentItem() и childItems().
void QGraphicsItem::setPos(const QPointF &pos)
Устанавливает позицию элемента на pos, которая указана в координатах родительского элемента. Для элементов без родителя pos указывается в координатах сцены.
Позиция элемента описывает его начало (локальные координаты (0, 0)) в координатах родительского элемента.
См. также pos(), scenePos() и Система координат Graphics View.
void QGraphicsItem::setPos(qreal x, qreal y)
Это перегруженная функция.
Эта вспомогательная функция эквивалентна вызову setPos(QPointF(x, y)).
void QGraphicsItem::setRotation(qreal angle)
Устанавливает поворот по часовой стрелке angle, в градусах, вокруг оси Z. Значение по умолчанию равно 0 (т.е. элемент не поворачивается). Присвоение отрицательного значения повернёт элемент против часовой стрелки. Обычно угол поворота находится в диапазоне (-360, 360), но также возможно присвоение значений за пределами этого диапазона (например, поворот на 370 градусов эквивалентен повороту на 10 градусов).
Элемент поворачивается вокруг точки начала преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другую точку начала преобразования, вызвав setTransformOriginPoint().
Поворот объединяется с масштабом элемента scale(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента в родительский элемент.
Эта функция была введена в Qt 4.6.
См. также rotation(), setTransformOriginPoint() и Преобразования.
void QGraphicsItem::setScale(qreal factor)
Устанавливает масштаб factor элемента. Значение масштаба по умолчанию равно 1.0 (т.е. элемент не масштабируется). Масштаб 0.0 свёрнёт элемент в одну точку. Если вы укажите отрицательный масштаб, элемент будет перевернут и отражён (т.е. повернётся на 180 градусов).
Элемент масштабируется относительно точки начала преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другую точку начала преобразования, вызвав setTransformOriginPoint().
Масштаб комбинируется с вращением() элемента, преобразованием() и преобразованиями() элемента для сопоставления системы координат элемента с родительским элементом.
Эта функция была добавлена в Qt 4.6.
См. также scale(), setTransformOriginPoint() и Пример преобразований.
void QGraphicsItem::setSelected(bool selected)
Если selected равно true, и элемент выбираем, этот элемент выбирается; в противном случае, он убирается из выбранных.
Если элемент находится в группе, состояние выбора всей группы переключается этой функцией. Если группа выбрана, все элементы в группе также выбираются, а если группа не выбрана, ни один элемент в группе не выбирается.
Только видимые, активные и выбираемые элементы могут быть выбраны. Если selected равно true, и этот элемент невидим, отключен или невыбираем, функция ничего не делает.
По умолчанию элементы не могут быть выбраны. Чтобы включить выбор, установите флаг ItemIsSelectable.
Эта функция предоставляется для удобства, позволяя индивидуально переключать состояние выбора элемента. Однако более распространённый способ выбора элементов — вызов QGraphicsScene::setSelectionArea(), который вызовет эту функцию для всех видимых, активных и выбираемых элементов в заданной области сцены.
См. также isSelected() и QGraphicsScene::selectedItems().
void QGraphicsItem::setToolTip(const QString &toolTip)
Устанавливает подсказку элемента на toolTip. Если toolTip пустая, подсказка элемента очищается.
См. также toolTip() и QToolTip.
void QGraphicsItem::setTransform(const QTransform &matrix, bool combine = false)
Устанавливает текущую матрицу преобразования элемента на matrix.
Если combine равно true, то matrix комбинируется с текущей матрицей; в противном случае matrix заменяет текущую матрицу. По умолчанию combine равно false.
Для упрощения взаимодействия с элементами, используя преобразованный вид, QGraphicsItem предоставляет функции mapTo... и mapFrom..., которые могут переводить между координатами элементов и сцены. Например, вы можете вызвать mapToScene() для преобразования координат элемента в координаты сцены или mapFromScene() для преобразования из координат сцены в координаты элемента.
Матрица преобразования комбинируется с вращением элемента (rotation()), масштабированием (scale()) и преобразованиями (transformations()) в объединённое преобразование, которое сопоставляет систему координат элемента с родительским элементом.
Эта функция была добавлена в Qt 4.3.
См. также transform(), setRotation(), setScale(), setTransformOriginPoint(), Система координат графического представления и Преобразования.
void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)
Устанавливает точку origin для преобразования в координатах элемента.
Эта функция была добавлена в Qt 4.6.
См. также transformOriginPoint() и Преобразования.
void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)
Это перегруженная функция.
Устанавливает точку начала преобразования в координатах элемента. Это эквивалентно вызову setTransformOriginPoint(QPointF(x, y)).
Эта функция была добавлена в Qt 4.6.
См. также setTransformOriginPoint() и Преобразования.
void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)
Устанавливает список графических преобразований (QGraphicsTransform), которые в настоящее время применяются к этому элементу.
Если вам нужно только повернуть или масштабировать элемент, вы должны вызвать setRotation() или setScale() вместо этого. Если вы хотите установить произвольное преобразование элемента, вы можете вызвать setTransform().
QGraphicsTransform предназначен для применения и управления цепочкой отдельных операций преобразования элемента. Это особенно полезно в анимациях, где каждая операция преобразования должна интерполироваться независимо или по-разному.
Преобразования комбинируются с вращением элемента (rotation()), масштабированием (scale()) и преобразованием (transform()) для отображения системы координат элемента относительно родительского элемента.
Эта функция была добавлена в Qt 4.6.
См. также transformations(), scale(), setTransformOriginPoint() и Преобразования.
void QGraphicsItem::setVisible(bool visible)
Если visible равно true, элемент делается видимым. В противном случае элемент делается невидимым. Невидимые элементы не отрисовываются и не получают никаких событий. В частности, события мыши проходят прямо сквозь невидимые элементы и доставляются любому элементу, который может быть позади. Невидимые элементы также невыбираемые, не могут получить фокус и не обнаруживаются функциями определения местоположения элементов QGraphicsScene.
Если элемент становится невидимым во время захвата мыши (т.е. в то время, когда он получает события мыши), он автоматически потеряет захват мыши, и захват не восстанавливается, делая элемент видимым вновь; для восстановления захвата мыши требуется новое нажатие мыши.
Аналогично, невидимый элемент не может получить фокус, поэтому, если элемент имеет фокус, когда он становится невидимым, он потеряет фокус, и фокус не восстанавливается, просто сделав элемент видимым вновь.
Если вы скрываете родительский элемент, все его дочерние элементы также будут скрыты. Если вы показываете родительский элемент, все дочерние элементы будут показаны, если они не были явно скрыты (т.е., если вы вызываете setVisible(false) для дочернего элемента, он не будет показан снова, даже если его родительский элемент был скрыт, а затем снова показан).
Элементы видимы по умолчанию; вызывать setVisible() для нового элемента не нужно.
Примечание: Элемент с непрозрачностью, установленной в 0, всё ещё считается видимым, хотя он будет обрабатываться как невидимый элемент: события мыши пройдут сквозь него, он не будет включён в элементы, возвращённые QGraphicsView::items(), и так далее. Однако элемент сохранит фокус.
См. также isVisible(), show(), hide() и setOpacity().
void QGraphicsItem::setX(qreal x)
Устанавливает координату x позиции элемента. Эквивалентно вызову setPos(x, y()).
Эта функция была добавлена в Qt 4.6.
void QGraphicsItem::setY(qreal y)
Устанавливает координату y позиции элемента. Эквивалентно вызову setPos(x(), y).
Эта функция была добавлена в Qt 4.6.
См. также y(), x() и setPos().
void QGraphicsItem::setZValue(qreal z)
Устанавливает значение Z элемента на z. Значение Z определяет порядок наложения элементов-братьев (соседних элементов). Элемент-брат с большим значением Z всегда будет отображаться поверх другого элемента-брата с меньшим значением Z.
Если вы восстановите значение Z, порядок вставки элемента определит порядок наложения.
Значение Z не влияет на размер элемента никоим образом.
Значение Z по умолчанию равно 0.
См. также zValue(), Сортировка, stackBefore() и ItemStacksBehindParent.
QPainterPath QGraphicsItem::shape() const
Возвращает форму этого элемента в виде QPainterPath в локальных координатах. Форма используется для многих целей, включая проверку столкновений, проверку попадания и для функций QGraphicsScene::items().
Реализация по умолчанию вызывает boundingRect() для возвращения простой прямоугольной формы, но подклассы могут переопределить эту функцию, чтобы вернуть более точную форму для непрямоугольных элементов. Например, круглый элемент может выбрать возврат эллиптической формы для лучшей проверки столкновений. Например:
Контур формы может изменяться в зависимости от ширины и стиля пера, используемого при рисовании. Если вы хотите включить этот контур в форму элемента, вы можете создать форму из обводки, используя QPainterPathStroker.
Эта функция вызывается в стандартных реализациях contains() и collidesWithPath().
См. также boundingRect(), contains(), prepareGeometryChange() и QPainterPathStroker.
void QGraphicsItem::show()
Отображает элемент (элементы отображаются по умолчанию).
Эта вспомогательная функция эквивалентна вызову setVisible(true).
См. также hide() и setVisible().
void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)
Устанавливает этот элемент перед элементом sibling, который должен быть соседним элементом (то есть, два элемента должны иметь одного и того же родительского элемента или оба должны быть элементами верхнего уровня). Элемент sibling должен иметь то же значение Z, что и этот элемент; в противном случае вызов этой функции не повлияет.
По умолчанию все соседние элементы упорядочиваются по порядку вставки (то есть, первый добавленный элемент рисуется перед следующим добавленным элементом). Если значения Z двух элементов разные, то элемент с наибольшим значением Z рисуется поверх. Если значения Z одинаковые, порядок вставки определяет порядок расположения.
Эта функция была добавлена в Qt 4.6.
См. также setZValue(), ItemStacksBehindParent и Сортировка.
QGraphicsObject *QGraphicsItem::toGraphicsObject()
Возвращает элемент графического элемента, преобразованный к типу QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.
Эта функция была добавлена в Qt 4.6.
const QGraphicsObject *QGraphicsItem::toGraphicsObject() const
Возвращает элемент графического элемента, преобразованный к типу QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.
Эта функция была добавлена в Qt 4.6.
QString QGraphicsItem::toolTip() const
Возвращает подсказку к элементу или пустую QString, если подсказка не была установлена.
См. также setToolTip() и QToolTip.
QGraphicsItem *QGraphicsItem::topLevelItem() const
Возвращает элемент верхнего уровня для этого элемента. Элемент верхнего уровня — это самый верхний родительский элемент, родитель которого равен 0. Если у элемента нет родителя, возвращается указатель на сам элемент (то есть, элемент верхнего уровня — это сам элемент).
См. также parentItem().
QGraphicsWidget *QGraphicsItem::topLevelWidget() const
Возвращает указатель на виджет верхнего уровня элемента (т. е. предка, чей родитель равен 0 или чей родитель не является виджетом), или 0, если у этого элемента нет виджета верхнего уровня. Если элемент является своим собственным виджетом верхнего уровня, эта функция возвращает указатель на сам элемент.
Эта функция была добавлена в Qt 4.4.
QTransform QGraphicsItem::transform() const
Возвращает матрицу преобразования этого элемента.
Матрица преобразования комбинируется с вращением, масштабированием и преобразованиями элемента в комбинированные преобразования для элемента.
По умолчанию матрица преобразования — это единичная матрица.
Эта функция была добавлена в Qt 4.3.
См. также setTransform() и sceneTransform().
QPointF QGraphicsItem::transformOriginPoint() const
Возвращает точку начала преобразования в координатах элемента.
По умолчанию — QPointF(0,0).
Эта функция была добавлена в Qt 4.6.
См. также setTransformOriginPoint() и Преобразования.
QList<QGraphicsTransform *> QGraphicsItem::transformations() const
Возвращает список графических преобразований, которые в настоящее время применяются к этому элементу.
QGraphicsTransform предназначен для применения и управления цепочкой отдельных операций преобразования над элементом. Это особенно полезно при анимациях, где каждая операция преобразования должна интерполироваться независимо или по-разному.
Преобразования комбинируются с вращением, масштабированием и преобразованием элемента, чтобы отобразить систему координат элемента в родительском элементе.
Эта функция была добавлена в Qt 4.6.
См. также 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()
Освобождает захват клавиатуры.
Эта функция была добавлена в Qt 4.4.
См. также grabKeyboard() и ungrabMouse().
void QGraphicsItem::ungrabMouse()
Освобождает захват мыши.
Эта функция была добавлена в Qt 4.4.
См. также grabMouse() и ungrabKeyboard().
void QGraphicsItem::unsetCursor()
Очищает курсор для этого элемента.
См. также hasCursor() и setCursor().
void QGraphicsItem::update(const QRectF &rect = QRectF())
Планирует перерисовку области, покрытой rect, в этом элементе. Вы можете вызвать эту функцию всякий раз, когда ваш элемент необходимо перерисовать, например, если он изменил вид или размер.
Эта функция не вызывает немедленную перерисовку; вместо этого она планирует запрос на перерисовку, который обрабатывается QGraphicsView после того, как управление вернётся в цикл событий. Элемент будет перерисован только если он виден в любом связанном представлении.
В качестве побочного эффекта перерисовки элемента, другие элементы, которые перекрывают область rect, также могут быть перерисованы.
Если элемент невидим (т. е. isVisible() возвращает false), эта функция ничего не делает.
См. также paint() и boundingRect().
void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)
Это перегруженная функция.
Эта вспомогательная функция эквивалентна вызову update(QRectF(x, y, width, height)).
[protected] void QGraphicsItem::updateMicroFocus()
Обновляет микрофокус элемента.
Эта функция была добавлена в Qt 4.7.
См. также QInputMethod.
[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)
Этот обработчик событий для события event может быть переопределен для получения событий прокрутки для этого элемента. Если вы переопределяете эту функцию, event будет приниматься по умолчанию.
Если вы игнорируете событие (т. е., вызывая QEvent::ignore()), оно будет распространяться на любой элемент под этим элементом. Если ни один элемент не примет событие, оно будет проигнорировано сценой и будет распространено на представление (например, на полосу прокрутки представления по вертикали).
Стандартная реализация игнорирует событие.
См. также sceneEvent().
QGraphicsWidget *QGraphicsItem::window() const
Возвращает окно элемента или 0, если у этого элемента нет окна. Если элемент является окном, он вернёт сам себя. В противном случае он вернёт ближайшего предка, являющегося окном.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsWidget::isWindow().
qreal QGraphicsItem::x() const
Эта вспомогательная функция эквивалентна вызову pos().x().
END_OF_DOCUMENT_MARKERqreal QGraphicsItem::y() const
Эта вспомогательная функция эквивалентна вызову pos().y().
qreal QGraphicsItem::zValue() const
Возвращает значение Z элемента. Значение Z влияет на порядок следования дочерних (соседних) элементов.
Значение Z по умолчанию равно 0.
См. также setZValue(), Сортировка, stackBefore() и ItemStacksBehindParent.
Связанные нечлены
T qgraphicsitem_cast(QGraphicsItem *item)
Возвращает заданный item, приведенный к типу T, если item имеет тип T; в противном случае возвращается 0.
Примечание: Чтобы эта функция работала корректно с пользовательскими элементами, переопределите функцию type() для каждого подкласса пользовательского элемента QGraphicsItem.
Эта функция была добавлена в Qt 4.2.
См. также QGraphicsItem::type() и QGraphicsItem::UserType.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qgraphicsitem.html