Класс QGraphicsItem
Класс QGraphicsItem является базовым классом для всех графических элементов в сцене QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsItem> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследуется от: | QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem |
Этот класс был представлен в Qt 4.2.
Типы public
| Перечисление | CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache } |
| Перечисление | GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemMatrixChange, ItemPositionChange, ItemPositionHasChanged, …, ItemScenePositionHasChanged } |
| Перечисление | GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, …, ItemContainsChildrenInShape } |
| Флаги | GraphicsItemFlags |
| Перечисление | PanelModality { NonModal, PanelModal, SceneModal } |
| Перечисление | anonymous { Type, UserType } |
Public Функции
| QGraphicsItem(QGraphicsItem *parent = nullptr) | |
| virtual | ~QGraphicsItem() |
| bool | acceptDrops() const |
| bool | acceptHoverEvents() const |
| bool | acceptTouchEvents() const |
| Qt::MouseButtons | acceptedMouseButtons() const |
| virtual void | advance(int phase) |
| virtual QRectF | boundingRect() const = 0 |
| QRegion | boundingRegion(const QTransform &itemToDeviceTransform) const |
| qreal | boundingRegionGranularity() const |
| QGraphicsItem::CacheMode | cacheMode() const |
| QList<QGraphicsItem *> | childItems() const |
| QRectF | childrenBoundingRect() const |
| void | clearFocus() |
| QPainterPath | clipPath() const |
| virtual bool | collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| virtual bool | collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QGraphicsItem * | commonAncestorItem(const QGraphicsItem *other) const |
| virtual bool | contains(const QPointF &point) const |
| QCursor | cursor() const |
| QVariant | data(int key) const |
| QTransform | deviceTransform(const QTransform &viewportTransform) const |
| qreal | effectiveOpacity() const |
| void | ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50) |
| bool | filtersChildEvents() const |
| QGraphicsItem::GraphicsItemFlags | flags() const |
| QGraphicsItem * | focusItem() const |
| QGraphicsItem * | focusProxy() const |
| void | grabKeyboard() |
| void | grabMouse() |
| QGraphicsEffect * | graphicsEffect() const |
| QGraphicsItemGroup * | group() const |
| bool | hasCursor() const |
| bool | hasFocus() const |
| void | hide() |
| Qt::InputMethodHints | inputMethodHints() const |
| void | installSceneEventFilter(QGraphicsItem *filterItem) |
| bool | isActive() const |
| bool | isAncestorOf(const QGraphicsItem *child) const |
| bool | isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const |
| bool | isClipped() const |
| bool | isEnabled() const |
| bool | isObscured(const QRectF &rect = QRectF()) const |
| bool | isObscured(qreal x, qreal y, qreal w, qreal h) const |
| virtual bool | isObscuredBy(const QGraphicsItem *item) const |
| bool | isPanel() const |
| bool | isSelected() const |
| bool | isUnderMouse() const |
| bool | isVisible() const |
| bool | isVisibleTo(const QGraphicsItem *parent) const |
| bool | isWidget() const |
| bool | isWindow() const |
| QTransform | itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const |
| QPointF | mapFromItem(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromParent(const QPointF &point) const |
| QPolygonF | mapFromParent(const QRectF &rect) const |
| QPolygonF | mapFromParent(const QPolygonF &polygon) const |
| QPainterPath | mapFromParent(const QPainterPath &path) const |
| QPointF | mapFromParent(qreal x, qreal y) const |
| QPolygonF | mapFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromScene(const QPointF &point) const |
| QPolygonF | mapFromScene(const QRectF &rect) const |
| QPolygonF | mapFromScene(const QPolygonF &polygon) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPointF | mapFromScene(qreal x, qreal y) const |
| QPolygonF | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromParent(const QRectF &rect) const |
| QRectF | mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromScene(const QRectF &rect) const |
| QRectF | mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToParent(const QRectF &rect) const |
| QRectF | mapRectToParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToScene(const QRectF &rect) const |
| QRectF | mapRectToScene(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToItem(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapToItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapToItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToParent(const QPointF &point) const |
| QPolygonF | mapToParent(const QRectF &rect) const |
| QPolygonF | mapToParent(const QPolygonF &polygon) const |
| QPainterPath | mapToParent(const QPainterPath &path) const |
| QPointF | mapToParent(qreal x, qreal y) const |
| QPolygonF | mapToParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToScene(const QPointF &point) const |
| QPolygonF | mapToScene(const QRectF &rect) const |
| QPolygonF | mapToScene(const QPolygonF &polygon) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(qreal x, qreal y) const |
| QPolygonF | mapToScene(qreal x, qreal y, qreal w, qreal h) const |
| void | moveBy(qreal dx, qreal dy) |
| qreal | opacity() const |
| virtual QPainterPath | opaqueArea() const |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) = 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
Он предоставляет лёгкую основу для написания собственных пользовательских элементов. Это включает в себя определение геометрии элемента, обнаружение столкновений, его реализацию рисования и взаимодействие с элементом через обработчики событий. QGraphicsItem является частью Фреймворка Визуализации графики
Для удобства Qt предоставляет набор стандартных графических элементов для наиболее распространённых форм. Это:
- QGraphicsEllipseItem предоставляет эллиптический элемент
- QGraphicsLineItem предоставляет линейный элемент
- QGraphicsPathItem предоставляет элемент произвольной траектории
- QGraphicsPixmapItem предоставляет элемент пиксельного изображения
- QGraphicsPolygonItem предоставляет элемент многоугольника
- QGraphicsRectItem предоставляет прямоугольный элемент
- QGraphicsSimpleTextItem предоставляет простой текстовый метку элемент
- QGraphicsTextItem предоставляет расширенный текстовый элемент просмотра
Вся геометрическая информация элемента основана на его локальной системе координат. Позиция элемента, pos(), — единственная функция, которая не работает в локальных координатах, так как она возвращает позицию в координатах родителя. Система координат Визуализации графики подробно описывает систему координат.
Вы можете указать, должен ли элемент быть видимым (т.е. отображаться и принимать события), вызвав setVisible(). Скрытие элемента также скроет его дочерние элементы. Аналогично, вы можете включить или отключить элемент, вызвав setEnabled(). Если вы отключите элемент, все его дочерние элементы также будут отключены. По умолчанию элементы одновременно видимые и активные. Чтобы переключить, выбран ли элемент или нет, сначала включите выбор, установив флаг ItemIsSelectable, а затем вызовите setSelected(). Обычно выбор переключается сценой в результате взаимодействия пользователя.
Чтобы написать свой собственный графический элемент, вы сначала создаёте подкласс QGraphicsItem, а затем начинаете с реализации двух своих чисто виртуальных общедоступных функций: boundingRect(), которая возвращает оценку области, нарисованной элементом, и paint(), которая реализует фактическое рисование. Например:
class SimpleItem : public QGraphicsItem
{
public:
QRectF boundingRect() const override
{
qreal penWidth = 1;
return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
20 + penWidth, 20 + penWidth);
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) override
{
painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
}
}; Функция boundingRect() имеет много разных целей. QGraphicsScene основывает свой индекс элемента на boundingRect(), а QGraphicsView использует её как для отсечения невидимых элементов, так и для определения области, которая должна быть перекомпонована при рисовании перекрывающихся элементов. Кроме того, механизмы обнаружения столкновений QGraphicsItem используют boundingRect() для обеспечения эффективной отсечки. Точная алгоритм столкновений в collidesWithItem() основан на вызове shape(), которое возвращает точный контур формы элемента в виде QPainterPath.
QGraphicsScene ожидает, что все элементы boundingRect() и shape() останутся неизменными, пока не будет уведомлено. Если вы хотите изменить геометрию элемента каким-либо образом, вы должны сначала вызвать prepareGeometryChange(), чтобы позволить QGraphicsScene обновить свою учётную запись.
Обнаружение столкновений можно осуществить двумя способами:
- Переопределите shape(), чтобы вернуть точную форму для вашего элемента, и опирайтесь на стандартную реализацию collidesWithItem() для выполнения пересечения формы с формой. Это может быть довольно дорогостоящим, если формы сложные.
- Переопределите collidesWithItem(), чтобы предоставить собственный алгоритм столкновения элемента и формы.
Функцию contains() можно вызвать, чтобы определить, содержит ли элемент точку. Эту функцию также можно переопределить в элементе. По умолчанию поведение функции contains() основано на вызове функции shape().
Элементы могут содержать другие элементы и также могут содержаться другими элементами. Все элементы могут иметь родительский элемент и список дочерних элементов. Если у элемента нет родителя, его позиция задаётся в координатах родителя (т. е. в локальных координатах родителя). Родительские элементы передают свою позицию и преобразование всем дочерним элементам.
Преобразования
QGraphicsItem поддерживает проективные преобразования помимо базовой позиции, pos(). Существует несколько способов изменить преобразование элемента. Для простых преобразований можно вызвать функции setRotation() или setScale(), или передать любую матрицу преобразования в setTransform(). Для сложного управления преобразованиями можно задать несколько комбинированных преобразований, вызвав setTransformations().
Преобразования элементов накапливаются от родительского к дочернему элементу, поэтому если и родительский, и дочерний элементы повернуты на 90 градусов, общее преобразование дочернего элемента будет составлять 180 градусов. Аналогично, если родительский элемент масштабирован в 2 раза относительно своего исходного размера, его дочерние элементы также будут в 2 раза больше. Преобразование элемента не влияет на его собственную локальную геометрию; все геометрические функции (например, contains(), update() и все функции отображения) всё равно работают в локальных координатах. Для удобства QGraphicsItem предоставляет функции sceneTransform(), которая возвращает общую матрицу преобразования элемента (включая его позицию и позиции всех родителей и их преобразования), и scenePos(), которая возвращает его позицию в координатах сцены. Чтобы сбросить матрицу преобразования элемента, вызовите resetTransform().
Некоторые операции преобразования дают разные результаты в зависимости от порядка их применения. Например, если вы сначала масштабируете, а затем поворачиваете преобразование, результат может отличаться от результата при повороте преобразования первым. Однако порядок задания свойств преобразования в QGraphicsItem не влияет на результирующее преобразование; QGraphicsItem всегда применяет свойства в фиксированном определённом порядке:
- Применяется базовое преобразование элемента (transform())
- Применяется список преобразований элемента в порядке следования (transformations())
- Элемент поворачивается относительно точки начала преобразования (rotation(), transformOriginPoint())
- Элемент масштабируется относительно точки начала преобразования (scale(), transformOriginPoint())
Отрисовка
Функция paint() вызывается QGraphicsView для отрисовки содержимого элемента. У элемента нет собственного фона или заливки по умолчанию; то, что находится за элементом, будет видно через все области, которые явно не отрисованы в этой функции. Вы можете вызвать update() для планирования перерисовки, необязательно передав прямоугольник, требующий перерисовки. В зависимости от видимости элемента в представлении, он может быть перерисован или нет; в QGraphicsItem нет эквивалента QWidget::repaint().
Элементы отрисовываются представлением, начиная с родительских элементов, а затем отрисовываются дочерние элементы в порядке возрастания порядка наложения. Вы можете установить порядок наложения элемента, вызвав 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 и Фреймворк представления графики.
Документация по типам членов
enum 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().
END_OF_DOCUMENT_MARKERenum 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() — это старая сцена или nullptr, если элемент ещё не добавлен в сцену. Аргумент value — это новая сцена (т.е. указатель на QGraphicsScene), или nullptr, если элемент удалён из сцены. Не переопределяйте это изменение, передавая этот элемент в QGraphicsScene::addItem(), так как это уведомление уже передано; вместо этого можно вернуть новую сцену из itemChange(). Используйте эту функцию с осторожностью; возражение против изменения сцены может быстро привести к нежелательной рекурсии. |
QGraphicsItem::ItemSceneHasChanged |
16 |
Сцена элемента изменилась. Сцена элемента — scene() — это новая сцена. Это уведомление также отправляется, когда элемент добавляется в начальную сцену и когда он удаляется. Аргумент value — это новая сцена (т.е. указатель на QGraphicsScene). Не вызывайте setScene() в itemChange(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemCursorChange |
17 |
Курсор элемента изменяется. Аргумент value — это новый курсор (т.е. QCursor). Не вызывайте setCursor() в itemChange(), так как это уведомление уже передано. Вместо этого можно вернуть новый курсор из itemChange(). |
QGraphicsItem::ItemCursorHasChanged |
18 |
Курсор элемента изменился. Аргумент value — это новый курсор (т.е. QCursor). Не вызывайте setCursor(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemToolTipChange |
19 |
Подсказка элемента изменяется. Аргумент value — это новая подсказка (т.е. QToolTip). Не вызывайте setToolTip() в itemChange(), так как это уведомление уже передано. Вместо этого можно вернуть новую подсказку из itemChange(). |
QGraphicsItem::ItemToolTipHasChanged |
20 |
Подсказка элемента изменилась. Аргумент value — это новая подсказка (т.е. QToolTip). Не вызывайте setToolTip(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemFlagsChange |
21 |
Флаги элемента изменяются. Аргумент value — это новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange(), так как это уведомление уже передано. Вместо этого можно вернуть новые флаги из itemChange(). |
QGraphicsItem::ItemFlagsHaveChanged |
22 |
Флаги элемента изменились. Аргумент value — это новые флаги (т.е. quint32). Не вызывайте setFlags() в itemChange(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemZValueChange |
23 |
Значение Z элемента изменяется. Аргумент value — это новое значение Z (т.е. double). Не вызывайте setZValue() в itemChange(), так как это уведомление уже передано. Вместо этого можно вернуть новое значение Z из itemChange(). |
QGraphicsItem::ItemZValueHasChanged |
24 |
Значение Z элемента изменилось. Аргумент value — это новое значение Z (т.е. double). Не вызывайте setZValue(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemOpacityChange |
25 |
Изменяется непрозрачность элемента. Аргумент value — это новая непрозрачность (т.е. double). Не вызывайте setOpacity() в itemChange(), так как это уведомление уже передано. Вместо этого можно вернуть новую непрозрачность из itemChange(). |
QGraphicsItem::ItemOpacityHasChanged |
26 |
Непрозрачность элемента изменилась. Аргумент value — это новая непрозрачность (т.е. double). Не вызывайте setOpacity(), так как это уведомление уже передано. Значение возврата игнорируется. |
QGraphicsItem::ItemScenePositionHasChanged |
27 |
Изменилась позиция элемента в сцене. Это уведомление отправляется, если флаг ItemSendsScenePositionChanges включен, и после изменения позиции элемента в сцене (т.е. изменилась позиция или преобразование самого элемента или позиция или преобразование любого предка). Аргумент value — это новая позиция в сцене (такая же, как scenePos()), и QGraphicsItem игнорирует значение возврата для этого уведомления (т.е. только для чтения). |
enum QGraphicsItem::GraphicsItemFlagflags QGraphicsItem::GraphicsItemFlags
Этот перечисление описывает различные флаги, которые можно установить на элементе, чтобы изменить различные функции в поведении элемента.
Все флаги по умолчанию отключены.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsItem::ItemIsMovable |
0x1 |
Элемент поддерживает интерактивное перемещение с помощью мыши. Щёлкнув по элементу и перетащив его, элемент будет перемещаться вместе с курсором мыши. Если у элемента есть дочерние элементы, все дочерние элементы также перемещаются. Если элемент является частью выделения, все выделенные элементы также перемещаются. Эта функция предоставляется как удобство благодаря базовой реализации обработчиков событий мыши QGraphicsItem. |
QGraphicsItem::ItemIsSelectable |
0x2 |
Элемент поддерживает выделение. Включение этой функции позволит setSelected() переключать выделение для элемента. Это также позволит элементу быть автоматически выделенным в результате вызова QGraphicsScene::setSelectionArea(), щелчка по элементу или использования выделения резиновым прямоугольником в QGraphicsView. |
QGraphicsItem::ItemIsFocusable |
0x4 |
Элемент поддерживает фокус ввода с клавиатуры (т.е. это элемент ввода). Включение этого флага позволит элементу принимать фокус, что, в свою очередь, позволит передавать события нажатия клавиш в QGraphicsItem::keyPressEvent() и QGraphicsItem::keyReleaseEvent(). |
QGraphicsItem::ItemClipsToShape |
0x8 |
Элемент обрезается до собственной формы. Элемент не может рисовать или получать события мыши, планшета, перетаскивания или наведения курсора вне своей формы. Он отключен по умолчанию. Это поведение реализуется в QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был введен в Qt 4.3. |
QGraphicsItem::ItemClipsChildrenToShape |
0x10 |
Элемент обрезает отрисовку всех своих потомков до собственной формы. Элементы, которые являются прямыми или косвенными потомками этого элемента, не могут рисовать за пределами формы этого элемента. По умолчанию этот флаг отключён; дочерние элементы могут рисовать где угодно. Это поведение реализуется в QGraphicsView::drawItems() или QGraphicsScene::drawItems(). Этот флаг был введен в Qt 4.3. |
Примечание: Этот флаг аналогичен ItemContainsChildrenInShape, но дополнительно принудительно устанавливает ограничение, обрезая дочерние элементы.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::ItemIgnoresTransformations |
0x20 |
Элемент игнорирует унаследованные преобразования (т.е., его положение по-прежнему привязано к родительскому элементу, но преобразования поворота, масштабирования или сдвига родительского элемента или представления игнорируются). Этот флаг полезен для поддержания горизонтального расположения и неизменного масштаба элементов текстовых меток, чтобы они оставались читаемыми, если представление преобразуется. При установке этого флага геометрия элемента представления и геометрия сцены будут поддерживаться раздельно. Необходимо вызвать deviceTransform() для отображения координат и обнаружения столкновений в представлении. По умолчанию этот флаг отключён. Этот флаг был добавлен в Qt 4.3. |
Примечание: При установке этого флага вы по-прежнему можете масштабировать сам элемент, и это преобразование масштаба повлияет на его дочерние элементы.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::ItemIgnoresParentOpacity |
0x40 |
Элемент игнорирует непрозрачность родительского элемента. Эффективная непрозрачность элемента совпадает с его собственной непрозрачностью; она не комбинируется с непрозрачностью родителя. Этот флаг позволяет вашему элементу сохранять абсолютную непрозрачность, даже если родительский элемент полупрозрачен. Этот флаг был добавлен в Qt 4.5. |
QGraphicsItem::ItemDoesntPropagateOpacityToChildren |
0x80 |
Элемент не распространяет свою непрозрачность на дочерние элементы. Этот флаг позволяет создавать полупрозрачный элемент, который не влияет на непрозрачность его дочерних элементов. Этот флаг был добавлен в Qt 4.5. |
QGraphicsItem::ItemStacksBehindParent |
0x100 |
Элемент размещается позади своего родительского элемента. По умолчанию дочерние элементы размещаются поверх родительского элемента. Но при установке этого флага дочерний элемент будет размещён позади родительского. Этот флаг полезен для эффектов теней и для элементов декора, которые следуют геометрии родительского элемента без рисования поверх него. Этот флаг был добавлен в Qt 4.5. |
QGraphicsItem::ItemUsesExtendedStyleOption |
0x200 |
Элемент использует либо exposedRect, либо matrix в QStyleOptionGraphicsItem. По умолчанию exposedRect инициализируется методом boundingRect() элемента, а matrix не преобразован. Вы можете установить этот флаг для настройки параметров стиля с более подробными значениями. Обратите внимание, что QStyleOptionGraphicsItem::levelOfDetail не изменяется этим флагом и всегда инициализируется значением 1. Используйте QStyleOptionGraphicsItem::levelOfDetailFromTransform(), если вам требуется более высокое значение. Этот флаг был добавлен в Qt 4.6. |
QGraphicsItem::ItemHasNoContents |
0x400 |
Элемент не рисует ничего (т.е., вызов paint() для элемента не имеет эффекта). Вы должны установить этот флаг для элементов, которым не нужно рисовать, чтобы обеспечить, что Визуализация графики избегает ненужной подготовки к рисованию. Этот флаг был добавлен в Qt 4.6. |
Примечание: Если оба флага, этот и ItemClipsChildrenToShape, установлены, ограничение будет применено. Это эквивалентно просто установке ItemClipsChildrenToShape.
Этот флаг был добавлен в Qt 5.4.
Тип GraphicsItemFlags является псевдонимом для QFlags<GraphicsItemFlag>. Он хранит комбинацию значений GraphicsItemFlag, объединённых операцией OR.
перечисление QGraphicsItem::PanelModality
Это перечисление определяет поведение модального панели. Модальная панель блокирует ввод для других панелей. Обратите внимание, что элементы, являющиеся дочерними элементами модальной панели, не блокируются.
Значения:
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::NonModal |
0 |
Панель не модальная и не блокирует ввод для других панелей. Это значение по умолчанию для панелей. |
Это перечисление было добавлено или изменено в Qt 4.6.
См. также QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality(), и QGraphicsItem::ItemIsPanel.
перечисление QGraphicsItem::anonymous
Значение, возвращаемое виртуальной функцией type() в стандартных классах графических элементов в Qt. Все такие стандартные классы графических элементов в Qt связаны с уникальным значением для Type, например, значение, возвращаемое QGraphicsPathItem::type(), равно 2.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::Type |
1 |
class QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
public:
enum { Type = 2 };
int type() const override { return Type; }
...
}; |
QGraphicsItem::UserType |
65536 |
Наименьшее значение, возвращаемое виртуальной функцией type() для пользовательских подклассов QGraphicsItem.class CustomItem : public QGraphicsItem
{
public:
enum { Type = UserType + 1 };
int type() const override
{
// Enable the use of qgraphicsitem_cast with this item.
return Type;
}
...
}; |
Документация по функциям-членам
QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)
Конструктор QGraphicsItem с заданным родительским элементом parent. Он не изменяет родительский объект, возвращаемый QObject::parent().
Если parent равен nullptr, вы можете добавить элемент в сцену, вызвав QGraphicsScene::addItem(). Тогда элемент станет верхнеуровневым.
См. также QGraphicsScene::addItem() и setParentItem().
[virtual] QGraphicsItem::~QGraphicsItem()
Уничтожает QGraphicsItem и все его дочерние элементы. Если этот элемент в настоящее время связан со сценой, он будет удалён из сцены перед удалением.
Примечание: Более эффективно удалить элемент из QGraphicsScene перед уничтожением элемента.
bool QGraphicsItem::acceptDrops() const
Возвращает true, если этот элемент может принимать события перетаскивания; в противном случае, возвращает false. По умолчанию элементы не принимают события перетаскивания; элементы прозрачны для перетаскивания.
См. также setAcceptDrops().
bool QGraphicsItem::acceptHoverEvents() const
Возвращает true, если элемент принимает события наведения (QGraphicsSceneHoverEvent); в противном случае, возвращает false. По умолчанию элементы не принимают события наведения.
Эта функция была добавлена в Qt 4.4.
См. также setAcceptHoverEvents() и setAcceptedMouseButtons().
bool QGraphicsItem::acceptTouchEvents() const
Возвращает true, если элемент принимает события касания; в противном случае, возвращает false. По умолчанию элементы не принимают события касания.
Эта функция была добавлена в Qt 4.6.
См. также setAcceptTouchEvents().
Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const
Возвращает кнопки мыши, для которых этот элемент принимает события мыши. По умолчанию принимаются все кнопки мыши.
Если элемент принимает кнопку мыши, он станет элементом захвата мыши при получении события нажатия мыши для этой кнопки. Однако, если элемент не принимает кнопку, QGraphicsScene перенаправит события мыши первому элементу под ним, который это делает.
См. также setAcceptedMouseButtons() и mousePressEvent().
[virtual] void QGraphicsItem::advance(int phase)
Этот виртуальный метод вызывается дважды для всех элементов слотом QGraphicsScene::advance(). В первой фазе все элементы вызываются с phase == 0, что указывает на то, что элементы на сцене собираются передвинуться, а затем все элементы вызываются с phase == 1. Переопределите этот метод для обновления своего элемента, если вам нужна простая анимация, управляемая сценой.
По умолчанию метод ничего не делает.
Этот метод предназначен для анимации. Альтернативой является множественное наследование от QObject и QGraphicsItem и использование фреймворка анимации.
См. также QGraphicsScene::advance() и QTimeLine.
[pure virtual] QRectF QGraphicsItem::boundingRect() const
Этот чистый виртуальный метод определяет внешние границы элемента как прямоугольник; вся отрисовка должна быть ограничена внутри прямоугольника границ элемента. QGraphicsView использует это для определения, требует ли элемент перерисовки.
Хотя форма элемента может быть произвольной, прямоугольник границ всегда прямоугольный и не зависит от преобразования элементов.
Если вы хотите изменить прямоугольник границ элемента, вы должны сначала вызвать prepareGeometryChange(). Это уведомляет сцену о предстоящем изменении, чтобы она могла обновить индекс геометрии элемента; в противном случае сцена не будет знать о новой геометрии элемента, и результаты будут неопределенными (обычно, на представлении остаются артефакты рендеринга).
Переопределите этот метод, чтобы QGraphicsView мог определить, какие части виджета, если таковые имеются, необходимо перерисовать.
Примечание: для форм, которые рисуют контур/штрих, важно включить половину ширины пера в прямоугольник границ. Однако нет необходимости учитывать антиалиасинг.
Пример:
QRectF CircleItem::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
diameter + penWidth, diameter + penWidth);
} См. также boundingRegion(), shape(), contains(), Систему координат графического представления и prepareGeometryChange().
QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const
Возвращает область границ для этого элемента. Координатное пространство возвращаемой области зависит от itemToDeviceTransform. Если вы передадите тождественное преобразование QTransform в качестве параметра, этот метод вернет локальную область координат.
Область границ описывает грубую границу визуального содержимого элемента. Хотя вычисление области границ дорогостоящее, она также более точна, чем boundingRect(), и может помочь избежать ненужной перерисовки при обновлении элемента. Это особенно эффективно для тонких элементов (например, линий или простых полигонов). Вы можете настроить точность области границ, вызвав setBoundingRegionGranularity(). По умолчанию точность составляет 0; в этом случае область границ элемента совпадает с его прямоугольником границ.
itemToDeviceTransform — это преобразование из координат элемента в координаты устройства. Если вы хотите, чтобы этот метод возвращал QRegion в координатах сцены, вы можете передать sceneTransform() в качестве аргумента.
Эта функция была добавлена в Qt 4.4.
См. также boundingRegionGranularity().
qreal QGraphicsItem::boundingRegionGranularity() const
Возвращает точность области границ элемента; значение от 0 до 1 включительно. Значение по умолчанию равно 0 (т.е., наименьшая точность, где область границ соответствует прямоугольнику границ элемента).
Эта функция была добавлена в Qt 4.4.
См. также setBoundingRegionGranularity().
QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const
Возвращает режим кэширования для этого элемента. Режим по умолчанию — NoCache (т.е., кэширование отключено, и вся отрисовка производится немедленно).
Эта функция была добавлена в Qt 4.4.
См. также setCacheMode().
QList<QGraphicsItem *> QGraphicsItem::childItems() const
Возвращает список дочерних элементов этого элемента.
Элементы отсортированы по порядку стекирования. Это учитывает как порядок вставки элементов, так и их Z-значения.
Эта функция была добавлена в Qt 4.4.
См. также setParentItem(), zValue(), и Сортировка.
QRectF QGraphicsItem::childrenBoundingRect() const
Возвращает прямоугольник границ потомков этого элемента (т.е., его детей, их детей и т. д.) в локальных координатах. Прямоугольник будет содержать всех потомков после того, как они будут отображены в локальные координаты. Если у элемента нет детей, этот метод возвращает пустой QRectF.
Это не включает собственный прямоугольник границ этого элемента; он возвращает только накопленный прямоугольник границ его потомков. Если вам нужно включить прямоугольник границ этого элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью QRectF::operator|().
Этот метод имеет линейную сложность; он определяет размер возвращаемого прямоугольника границ, проходя по всем потомкам.
См. также boundingRect() и sceneBoundingRect().
void QGraphicsItem::clearFocus()
Убирает фокус ввода с клавиатуры у элемента.
Если у него есть фокус, этому элементу отправляется событие focus out event, чтобы сообщить ему, что он собирается потерять фокус.
Только элементы, которые установили флаг ItemIsFocusable, или виджеты, которые установили соответствующую политику фокуса, могут принимать фокус клавиатуры.
См. также setFocus(), hasFocus() и QGraphicsWidget::focusPolicy.
QPainterPath QGraphicsItem::clipPath() const
Возвращает путь обрезки этого элемента или пустой QPainterPath, если этот элемент не обрезается. Путь обрезки ограничивает внешний вид и взаимодействие элемента (т.е. ограничивает область, в которой элемент может рисоваться и получать события).
Вы можете включить обрезку, установив флаги ItemClipsToShape или ItemClipsChildrenToShape. Путь обрезки элемента вычисляется путем пересечения всех форм предков обрезки. Если элемент устанавливает ItemClipsToShape, окончательная обрезка пересекается с собственной формой элемента.
Примечание: Обрезка вносит штраф за производительность для всех вовлеченных элементов; в общем случае следует избегать использования обрезки, если можно (например, если ваши элементы всегда рисуются внутри границ boundingRect() или shape(), обрезка не нужна).
Эта функция была добавлена в Qt 4.5.
См. также isClipped(), shape() и setFlags().
[virtual] bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает true, если этот элемент пересекается с other; в противном случае возвращает false.
Режим mode применяется к элементу other, а полученная форма или ограничивающая прямоугольник затем сравниваются с формой этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape; элемент other сталкивается с этим элементом, если он либо пересекает, либо содержит, либо содержится формой этого элемента (см. Qt::ItemSelectionMode для получения подробной информации).
Реализация по умолчанию основана на пересечении форм, и она вызывает shape() для обоих элементов. Поскольку сложность произвольного пересечения форм растет на порядок при усложнении форм, эта операция может занимать ощутимо много времени. У вас есть возможность переопределить эту функцию в подклассе QGraphicsItem, чтобы реализовать пользовательский алгоритм. Это позволяет использовать естественные ограничения в формах собственных элементов для повышения производительности обнаружения столкновений. Например, столкновение двух не преобразованных идеальных кругов можно определить очень эффективно, сравнив их положения и радиусы.
Помните, что при переопределении этой функции и вызове shape() или boundingRect() для элемента other, возвращаемые координаты должны быть отображены в системе координат этого элемента перед любым пересечением.
См. также contains() и shape().
[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает true, если этот элемент сталкивается с path.
Столкновение определяется по mode. Значение по умолчанию для mode — Qt::IntersectsItemShape; path сталкивается с этим элементом, если он либо пересекает, либо содержит, либо содержится формой этого элемента.
Обратите внимание, что эта функция проверяет, содержится ли форма или ограничивающая прямоугольник элемента (в зависимости от mode) в path, а не содержится ли path в форме или ограничивающем прямоугольнике элемента.
См. также collidesWithItem(), contains() и shape().
QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Возвращает список всех элементов, которые сталкиваются с этим элементом.
Способ обнаружения столкновений определяется путем применения mode к элементам, которые сравниваются с этим элементом, т. е. форма или ограничивающий прямоугольник каждого элемента проверяется относительно формы этого элемента. Значение по умолчанию для mode — Qt::IntersectsItemShape.
См. также collidesWithItem().
QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const
Возвращает ближайший общий предковый элемент этого элемента и other, или nullptr, если other является nullptr или общего предка нет.
Эта функция была добавлена в Qt 4.4.
См. также isAncestorOf().
[virtual] bool QGraphicsItem::contains(const QPointF &point) const
Возвращает true, если этот элемент содержит point, которая находится в локальных координатах; в противном случае возвращается false. Чаще всего она вызывается из QGraphicsView для определения элемента, находящегося под курсором, и поэтому реализация этой функции должна быть максимально лёгкой.
По умолчанию эта функция вызывает shape(), но вы можете переопределить её в подклассе для предоставления (возможно, более эффективной) реализации.
См. также shape(), boundingRect() и collidesWithPath().
[virtual protected] void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
Этот обработчик событий может быть переопределён в подклассе для обработки событий контекстного меню. Параметр event содержит сведения об обрабатываемом событии.
Если вы игнорируете событие (т. е., вызывая QEvent::ignore()), событие event будет передано любому элементу под этим элементом. Если ни один элемент не примет событие, оно будет проигнорировано сценой и будет передано в вид.
Обычно для ответа на событие контекстного меню открывается QMenu. Пример:
void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
QMenu menu;
QAction *removeAction = menu.addAction("Remove");
QAction *markAction = menu.addAction("Mark");
QAction *selectedAction = menu.exec(event->screenPos());
// ...
} Реализация по умолчанию игнорирует событие.
См. также sceneEvent().
QCursor QGraphicsItem::cursor() const
Возвращает текущую форму курсора для элемента. Курсор мыши примет эту форму, когда он будет над этим элементом. См. список предопределенных объектов курсора для ряда полезных форм.
Элемент редактора может использовать курсор «прямая с точкой»:
item->setCursor(Qt::IBeamCursor);
Если курсор не был задан, используется курсор элемента, расположенного ниже.
См. также setCursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
QVariant QGraphicsItem::data(int key) const
Возвращает пользовательские данные этого элемента для ключа key в качестве QVariant.
Пользовательские данные элемента полезны для хранения произвольных свойств в любом элементе. Пример:
static const int ObjectName = 0;
QGraphicsItem *item = scene.itemAt(100, 50);
if (item->data(ObjectName).toString().isEmpty()) {
if (qgraphicsitem_cast<ButtonItem *>(item))
item->setData(ObjectName, "Button");
} Qt не использует эту функцию для хранения данных; она предоставляется только для удобства пользователя.
См. также setData().
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
Возвращает матрицу преобразования устройства этого элемента, используя viewportTransform для отображения от координат сцены к координатам устройства. Эта матрица может быть использована для преобразования координат и геометрических фигур из локальной системы координат этого элемента в систему координат окна просмотра (или любой системы координат устройства). Для преобразования координат из окна просмотра необходимо сначала инвертировать возвращённую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // returns the item's (0, 0) point in view's viewport coordinates rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // returns view's viewport's (100, 100) coordinate in item coordinates
Эта функция такая же, как комбинация преобразования сцены этого элемента с преобразованием окна просмотра просмотра, но она также понимает флаг ItemIgnoresTransformations. Преобразование устройства может использоваться для точного преобразования координат (и обнаружения столкновений) для элементов, которые не преобразуются.
Эта функция была добавлена в Qt 4.3.
См. также transform(), setTransform(), scenePos(), Система координат виджета графического просмотра и itemTransform().
[virtual protected] void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий ввода перетаскивания для этого элемента. События ввода перетаскивания генерируются при входе курсора в область элемента.
Приняв событие (т. е., вызвав 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 = 50, int ymargin = 50)
Эта вспомогательная функция эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
bool QGraphicsItem::filtersChildEvents() const
Возвращает true, если этот элемент фильтрует события дочерних элементов (т.е., все события, предназначенные для любого из его дочерних элементов, вместо этого отправляются этому элементу); в противном случае возвращается false.
Значение по умолчанию — false; события дочерних элементов не фильтруются.
Эта функция была введена в Qt 4.6.
См. также setFiltersChildEvents().
QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const
Возвращает флаги этого элемента. Флаги описывают, какие настраиваемые возможности элемента включены. Например, если флаги включают ItemIsFocusable, элемент может получать фокус.
По умолчанию флаги не включены.
См. также setFlags() и setFlag().
[virtual protected] void QGraphicsItem::focusInEvent(QFocusEvent *event)
Этот обработчик событий для события event может быть переопределён для получения событий фокусировки для данного элемента. Реализация по умолчанию вызывает ensureVisible().
См. также focusOutEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusItem() const
Если этот элемент, дочерний элемент или потомок этого элемента в настоящее время имеют фокус, эта функция вернёт указатель на этот элемент. Если ни один потомок не имеет фокуса, возвращается nullptr.
Эта функция была введена в Qt 4.6.
См. также hasFocus(), setFocus() и QWidget::focusWidget().
[virtual protected] void QGraphicsItem::focusOutEvent(QFocusEvent *event)
Этот обработчик событий для события event может быть переопределён для получения событий выхода из фокуса для данного элемента. Реализация по умолчанию ничего не делает.
См. также focusInEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusProxy() const
Возвращает прокси-элемент фокуса этого элемента или nullptr, если у этого элемента нет прокси-элемента фокуса.
Эта функция была введена в Qt 4.6.
См. также setFocusProxy(), setFocus() и hasFocus().
void QGraphicsItem::grabKeyboard()
Захватывает ввод с клавиатуры.
Элемент будет получать весь ввод с клавиатуры в сцене до тех пор, пока не произойдёт одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabKeyboard()
- Другой элемент вызывает grabKeyboard(); элемент получит захват клавиатуры, когда другой элемент вызовет ungrabKeyboard().
Когда элемент получает захват клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет захват клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события могут быть использованы для определения того, как ваш элемент получает или теряет захват клавиатуры помимо получения фокуса.
В Qt почти никогда нет необходимости явно захватывать клавиатуру, так как Qt делает это разумно. В частности, Qt захватывает клавиатуру, когда ваш элемент получает фокус, и отпускает её, когда элемент теряет фокус или когда элемент скрыт.
Обратите внимание, что захватывать ввод с клавиатуры могут только видимые элементы. Вызов grabKeyboard() для невидимого элемента не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
См. также ungrabKeyboard(), grabMouse() и setFocus().
void QGraphicsItem::grabMouse()
Захватывает ввод с мыши.
Этот элемент будет получать все события мыши для сцены до тех пор, пока не произойдёт одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabMouse()
- Другой элемент вызывает grabMouse(); элемент получит захват мыши, когда другой элемент вызовет ungrabMouse().
Когда элемент получает захват мыши, он получает событие QEvent::GrabMouse. Когда он теряет захват мыши, он получает событие QEvent::UngrabMouse. Эти события могут быть использованы для определения того, как ваш элемент получает или теряет захват мыши помимо получения событий нажатия кнопок мыши.
В Qt почти никогда нет необходимости явно захватывать мышь, так как Qt делает это разумно. В частности, Qt захватывает мышь, когда вы нажимаете кнопку мыши, и держит её захваченной до тех пор, пока вы не отпустите последнюю кнопку мыши. Также, виджеты Qt::Popup неявно вызывают grabMouse() при отображении и ungrabMouse() при скрытии.
Обратите внимание, что захватывать ввод с мыши могут только видимые элементы. Вызов grabMouse() для невидимого элемента не имеет эффекта.
События клавиатуры не затрагиваются.
См. также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().
QGraphicsEffect *QGraphicsItem::graphicsEffect() const
Возвращает указатель на эффект этого элемента, если он есть; в противном случае nullptr.
Эта функция была введена в Qt 4.6.
См. также setGraphicsEffect().
QGraphicsItemGroup *QGraphicsItem::group() const
Возвращает указатель на группу элементов этого элемента или nullptr, если этот элемент не является членом группы.
См. также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
bool QGraphicsItem::hasCursor() const
Возвращает true, если для данного элемента установлен курсор; в противном случае возвращает false.
По умолчанию у элементов курсор не установлен. cursor() вернёт стандартный курсор указателя.
См. также unsetCursor().
bool QGraphicsItem::hasFocus() const
Возвращает true, если данный элемент активен и он или его заместитель фокуса имеет фокус клавиатуры; в противном случае возвращает false.
См. также focusItem(), setFocus(), QGraphicsScene::setFocusItem() и isActive().
void QGraphicsItem::hide()
Скрывает элемент (элементы отображаются по умолчанию).
Эта функция-удобство эквивалентна вызову setVisible(false).
См. также show() и setVisible().
[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий входа в область наведения для данного элемента. По умолчанию выполняется вызов update(); в противном случае ничего не делается.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий выхода из области наведения для данного элемента. По умолчанию выполняется вызов update(); в противном случае ничего не делается.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий перемещения в области наведения для данного элемента. По умолчанию ничего не выполняется.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий ввода для данного элемента. По умолчанию событие игнорируется.
См. также inputMethodQuery() и sceneEvent().
Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
Возвращает текущие подсказки ввода для данного элемента.
Подсказки ввода имеют значение только для элементов ввода. Подсказки используются методом ввода для указания, как он должен работать. Например, если установлен флаг Qt::ImhNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только цифры.
Эффект может различаться между реализациями методов ввода.
Эта функция была добавлена в Qt 4.6.
См. также setInputMethodHints() и inputMethodQuery().
[virtual protected] QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод имеет значение только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента, чтобы можно было поддерживать сложные операции методов ввода, такие как поддержка окружающего текста и преобразований.
См. также inputMethodEvent() и QInputMethodEvent.
void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)
Устанавливает фильтр событий для данного элемента на filterItem, вызывая все события для этого элемента сначала через функцию sceneEventFilter() filterItem.
Для фильтрации событий другого элемента установите этот элемент в качестве фильтра событий для другого элемента. Пример:
QGraphicsScene scene; QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20)); QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20)); line->installSceneEventFilter(ellipse); // line's events are filtered by ellipse's sceneEventFilter() function. ellipse->installSceneEventFilter(line); // ellipse's events are filtered by line's sceneEventFilter() function.
Элемент может фильтровать только события для других элементов в той же сцене. Также элемент не может фильтровать свои собственные события; вместо этого вы можете напрямую переопределить sceneEvent().
Для установки и использования фильтров событий сцены элементы должны принадлежать сцене.
См. также removeSceneEventFilter(), sceneEventFilter() и sceneEvent().
bool QGraphicsItem::isActive() const
Возвращает true, если данный элемент активен; в противном случае возвращает false.
Элемент может быть активным только если сцена активна. Элемент активен, если он или является потомком активной панели. Элементы в неактивных панелях не активны.
Элементы, которые не являются частью панели, следуют за активацией сцены, когда у сцены нет активной панели.
Только активные элементы могут получить фокус ввода.
Эта функция была добавлена в Qt 4.6.
См. также QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel() и isPanel().
bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const
Возвращает true, если данный элемент является предком child (то есть, если этот элемент является родителем child или одним из предков родителя child).
См. также parentItem().
bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
Возвращает true, если данный элемент заблокирован модальной панелью; в противном случае возвращает false. Если blockingPanel не равен нулю, blockingPanel будет установлен на модальную панель, которая блокирует данный элемент. Если элемент не заблокирован, blockingPanel не будет установлен этой функцией.
Эта функция всегда возвращает false для элементов, которые не находятся в сцене.
Эта функция была добавлена в Qt 4.6.
См. также panelModality(), setPanelModality() и PanelModality.
bool QGraphicsItem::isClipped() const
Возвращает true, если данный элемент обрезан. Элемент обрезан, если он установил флаг ItemClipsToShape или если он или любой из его предков установил флаг ItemClipsChildrenToShape.
Обрезка влияет на внешний вид элемента (то есть, отрисовку), а также на доставку событий мыши и наведения.
См. также clipPath(), shape() и setFlags().
bool QGraphicsItem::isEnabled() const
Возвращает true, если элемент включён; в противном случае возвращается false.
См. также setEnabled().
bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const
Это перегруженная функция.
Возвращает true, если rect полностью скрыта непрозрачной формой любого из элементов столкновения над ним (то есть, с более высоким значением Z, чем у данного элемента).
Эта функция была добавлена в Qt 4.3.
См. также opaqueArea().
bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const
Это перегруженная функция.
Эта функция-удобство эквивалентна вызову isObscured(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
[virtual] bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const
Возвращает true, если прямоугольник ограничительной области данного элемента полностью скрыт непрозрачной формой элемента item.
Базовая реализация отображает opaqueArea() элемента item в системе координат данного элемента, а затем проверяет, полностью ли содержится boundingRect() данного элемента внутри отображённой формы.
Вы можете переопределить эту функцию, чтобы реализовать пользовательский алгоритм определения того, скрыт ли данный элемент элементом item.
См. также opaqueArea() и isObscured().
bool QGraphicsItem::isPanel() const
Возвращает true, если элемент является панелью; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.6.
См. также QGraphicsItem::panel() и ItemIsPanel.
bool QGraphicsItem::isSelected() const
Возвращает true, если данный элемент выделен; в противном случае возвращает false.
Элементы, которые входят в группу, наследуют состояние выделения группы.
Элементы по умолчанию не выделены.
См. также setSelected() и QGraphicsScene::setSelectionArea().
bool QGraphicsItem::isUnderMouse() const
Возвращает true, если данный элемент находится под курсором мыши в одном из представлений; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsScene::views() и QCursor::pos().
bool QGraphicsItem::isVisible() const
Возвращает true, если элемент видимый; в противном случае возвращает false.
Обратите внимание, что общая видимость элемента не зависит от того, отображается ли он в настоящее время QGraphicsView.
См. также setVisible().
bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const
Возвращает true, если элемент виден элементу parent; в противном случае возвращает false. parent может быть nullptr, в этом случае функция возвращает, виден ли элемент сцене или нет.
Элемент может быть невидимым для своих предков, даже если isVisible() равно true. Он также может быть видимым для своих предков, даже если isVisible() равно false. Если любой предок скрыт, сам элемент будет неявным образом скрыт, в этом случае функция вернёт false.
Эта функция была добавлена в Qt 4.4.
См. также isVisible() и setVisible().
bool QGraphicsItem::isWidget() const
Возвращает true, если данный элемент является виджетом (т.е., QGraphicsWidget); в противном случае возвращает false.
Эта функция была добавлена в Qt 4.4.
bool QGraphicsItem::isWindow() const
Возвращает true, если элемент является окном виджета QGraphicsWidget, в противном случае возвращает false.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsWidget::windowFlags().
[virtual protected] QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
Этот виртуальный метод вызывается QGraphicsItem для уведомления пользовательских элементов о том, что изменилась какая-то часть состояния элемента. Переопределяя этот метод, вы можете отреагировать на изменение, и в некоторых случаях (в зависимости от change) произвести корректировки.
change — параметр меняемого элемента. value — новое значение; тип значения зависит от change.
Пример:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
QPointF newPos = value.toPointF();
QRectF rect = scene()->sceneRect();
if (!rect.contains(newPos)) {
// Keep the item inside the scene rect.
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
} По умолчанию реализация ничего не делает и возвращает value.
Примечание: Некоторые функции QGraphicsItem нельзя вызывать в переопределении этого метода; см. документацию по GraphicsItemChange для получения подробной информации.
См. также GraphicsItemChange.
QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
Возвращает QTransform, отображающий координаты из данного элемента в other. Если ok не равен null и такого преобразования не существует, boolean, на который указывает ok, будет установлен в false; в противном случае он будет установлен в true.
Это преобразование предоставляет альтернативу функциям mapToItem() или mapFromItem(), возвращая соответствующее преобразование, чтобы вы могли отображать фигуры и координаты самостоятельно. Это также помогает вам писать более эффективный код при многократном отображении между теми же двумя элементами.
Примечание: В редких случаях нет преобразования, отображающего две фигуры.
Эта функция была добавлена в Qt 4.5.
См. также mapToItem(), mapFromItem() и deviceTransform().
[virtual protected] void QGraphicsItem::keyPressEvent(QKeyEvent *event)
Этот обработчик событий для события event может быть переопределён для получения событий нажатия клавиш для данного элемента. По умолчанию реализация игнорирует событие. Если вы переопределите этот обработчик, событие по умолчанию будет принято.
Обратите внимание, что события нажатия клавиш принимаются только для элементов, которые установили флаг ItemIsFocusable, и которые имеют фокус ввода с клавиатуры.
См. также keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
[virtual protected] void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)
Этот обработчик событий для события event может быть переопределён для получения событий отпускания клавиш для данного элемента. По умолчанию реализация игнорирует событие. Если вы переопределите этот обработчик, событие по умолчанию будет принято.
Обратите внимание, что события нажатия клавиш принимаются только для элементов, которые установили флаг ItemIsFocusable, и которые имеют фокус ввода с клавиатуры.
См. также keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const
Отображает точку point, которая находится в системе координат item, в систему координат данного элемента и возвращает отображённую координату.
Если item равен nullptr, эта функция возвращает то же самое, что и mapFromScene().
См. также itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() и Систему координат графического представления.
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
Отображает прямоугольник rect, который находится в системе координат item, в систему координат данного элемента и возвращает отображённый прямоугольник в виде многоугольника.
Если item равен nullptr, эта функция возвращает то же самое, что и mapFromScene().
См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Систему координат графического представления.
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
Отображает многоугольник polygon, который находится в системе координат item, в систему координат данного элемента и возвращает отображённый многоугольник.
Если item равен nullptr, эта функция возвращает то же самое, что и mapFromScene().
См. также itemTransform(), mapToItem(), mapFromParent(), transform() и Систему координат графического представления.
QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
Преобразует путь path, который задан в системе координат объекта item, в систему координат текущего объекта и возвращает преобразованный путь.
Если item равен nullptr, эта функция возвращает то же самое, что и mapFromScene().
См. также itemTransform(), mapFromParent(), mapFromScene(), mapToItem() и Система координат виджета Graphics View.
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
Это перегруженная функция.
Эта функция-помощник эквивалентна вызову mapFromItem(item, QPointF(x, y)).
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
Эта функция-помощник эквивалентна вызову mapFromItem(item, QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapFromParent(const QPointF &point) const
Преобразует точку point, заданную в системе координат родительского элемента, в систему координат текущего элемента и возвращает преобразованную координату.
См. также mapFromItem(), mapFromScene(), transform(), mapToParent() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат родительского элемента, в систему координат текущего элемента и возвращает преобразованный прямоугольник в виде многоугольника.
См. также mapToParent(), mapFromItem(), transform() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат родительского элемента, в систему координат текущего элемента и возвращает преобразованный многоугольник.
См. также mapToParent(), mapToItem(), transform() и Система координат виджета Graphics View.
QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const
Преобразует путь path, заданный в системе координат родительского элемента, в систему координат текущего элемента и возвращает преобразованный путь.
См. также mapFromScene(), mapFromItem(), mapToParent() и Система координат виджета Graphics View.
QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const
Это перегруженная функция.
Эта функция-помощник эквивалентна вызову mapFromParent(QPointF(x, y)).
QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const
Эта функция-помощник эквивалентна вызову mapFromItem(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapFromScene(const QPointF &point) const
Преобразует точку point, заданную в системе координат сцены, в систему координат текущего элемента и возвращает преобразованную координату.
См. также mapFromItem(), mapFromParent(), transform(), mapToScene() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат сцены, в систему координат текущего элемента и возвращает преобразованный прямоугольник в виде многоугольника.
См. также mapToScene(), mapFromItem(), transform() и Система координат виджета Graphics View.
QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат сцены, в систему координат текущего элемента и возвращает преобразованный многоугольник.
См. также mapToScene(), mapFromParent(), transform() и Система координат виджета Graphics View.
QPainterPath QGraphicsItem::mapFromScene(const QPainterPath &path) const
Преобразует путь path, заданный в системе координат сцены, в систему координат текущего элемента и возвращает преобразованный путь.
См. также mapFromParent(), mapFromItem(), mapToScene() и Система координат виджета Graphics View.
QPointF QGraphicsItem::mapFromScene(qreal x, qreal y) const
Это перегруженная функция.
Эта функция-помощник эквивалентна вызову mapFromScene(QPointF(x, y)).
QPolygonF QGraphicsItem::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
Эта функция-помощник эквивалентна вызову mapFromScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат объекта item, в систему координат текущего объекта и возвращает преобразованный прямоугольник (т.е., ограничивающий прямоугольник полученного многоугольника).
Если item равен nullptr, эта функция возвращает то же самое, что и mapRectFromScene().
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат виджета Graphics View.
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
Эта функция-утилита эквивалентна вызову mapRectFromItem(item, QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат родительского элемента, в систему координат текущего элемента и возвращает преобразованный прямоугольник в виде нового прямоугольника (т.е., ограничивающего прямоугольника полученного многоугольника).
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат Виджета Графики.
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(), и Систему координат Виджета Графики.
QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
Эта функция-утилита эквивалентна вызову mapRectFromScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат текущего элемента, в систему координат элемента item и возвращает преобразованный прямоугольник в виде нового прямоугольника (т.е., ограничивающего прямоугольника полученного многоугольника).
Если item это nullptr, эта функция возвращает то же, что и mapRectToScene().
Эта функция была добавлена в Qt 4.5.
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат Виджета Графики.
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(), и Систему координат Виджета Графики.
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(), и Систему координат Виджета Графики.
QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
Эта функция-утилита эквивалентна вызову mapRectToScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.5.
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const
Преобразует точку point, заданную в системе координат текущего элемента, в систему координат элемента item и возвращает преобразованную координату.
Если item это nullptr, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem(), и Систему координат Виджета Графики.
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат текущего элемента, в систему координат элемента item и возвращает преобразованный прямоугольник в виде многоугольника.
Если item это nullptr, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат Виджета Графики.
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат текущего элемента, в систему координат элемента item и возвращает преобразованный многоугольник.
Если item это nullptr, эта функция возвращает то же, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem(), и Систему координат Виджета Графики.
QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
Преобразует путь path, заданный в системе координат данного элемента, в систему координат элемента item и возвращает преобразованный путь.
Если item равен nullptr, эта функция возвращает то же значение, что и mapToScene().
См. также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Систему координат виджета Graphics View.
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
Это перегруженный метод.
Эта вспомогательная функция эквивалентна вызову mapToItem(item, QPointF(x, y)).
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapToItem(item, QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapToParent(const QPointF &point) const
Преобразует точку point, заданную в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованную координату. Если у элемента нет родителя, point будет преобразована в систему координат сцены.
См. также mapToItem(), mapToScene(), transform(), mapFromParent() и Систему координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный прямоугольник в виде многоугольника. Если у элемента нет родителя, rect будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent() и Систему координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный многоугольник. Если у элемента нет родителя, polygon будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent() и Систему координат виджета Graphics View.
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
Преобразует путь path, заданный в системе координат данного элемента, в систему координат его родительского элемента и возвращает преобразованный путь. Если у элемента нет родителя, path будет преобразовано в систему координат сцены.
См. также mapToScene(), mapToItem(), mapFromParent() и Систему координат виджета Graphics View.
QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const
Это перегруженный метод.
Эта вспомогательная функция эквивалентна вызову mapToParent(QPointF(x, y)).
QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapToParent(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
QPointF QGraphicsItem::mapToScene(const QPointF &point) const
Преобразует точку point, заданную в системе координат данного элемента, в систему координат сцены и возвращает преобразованную координату.
См. также mapToItem(), mapToParent(), transform(), mapFromScene() и Систему координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const
Преобразует прямоугольник rect, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный прямоугольник в виде многоугольника.
См. также mapToParent(), mapToItem(), mapFromScene() и Систему координат виджета Graphics View.
QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const
Преобразует многоугольник polygon, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный многоугольник.
См. также mapToParent(), mapToItem(), mapFromScene() и Систему координат виджета Graphics View.
QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const
Преобразует путь path, заданный в системе координат данного элемента, в систему координат сцены и возвращает преобразованный путь.
См. также mapToParent(), mapToItem(), mapFromScene() и Систему координат виджета Graphics View.
QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const
Это перегруженный метод.
Эта вспомогательная функция эквивалентна вызову mapToScene(QPointF(x, y)).
QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const
Эта вспомогательная функция эквивалентна вызову mapToScene(QRectF(x, y, w, h)).
Эта функция была добавлена в Qt 4.3.
[virtual protected] void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий двойного щелчка мыши для данного элемента.
При двойном щелчке по элементу, элемент сначала получит событие нажатия мыши, за которым следуют событие отпускания (т.е. щелчок), затем событие двойного щелчка и, наконец, событие отпускания.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого влияния.
По умолчанию вызывается mousePressEvent(). Если вы хотите сохранить базовый реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseDoubleClickEvent() в вашем переопределении.
Обратите внимание, что элемент не получит события двойного щелчка, если он не является выбираемым ни перемещаемым (в этом случае одиночные щелчки игнорируются, и это останавливает генерацию двойных щелчков).
См. также mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий перемещения мыши для данного элемента. Если вы получаете это событие, вы можете быть уверены, что этот элемент также получил событие нажатия мыши и что этот элемент является текущим захватчиком мыши.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
По умолчанию реализация обрабатывает базовые взаимодействия с элементами, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseMoveEvent() в вашей переопределённой реализации.
Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. См. описание mousePressEvent() для получения подробностей.
См. также mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий нажатия мыши для данного элемента. События нажатия мыши доставляются только тем элементам, которые принимают нажатую кнопку мыши. По умолчанию элемент принимает все кнопки мыши, но вы можете изменить это, вызвав setAcceptedMouseButtons().
Событие нажатия мыши определяет, какой элемент должен стать захватчиком мыши (см. QGraphicsScene::mouseGrabberItem()). Если вы не переопределяете эту функцию, событие нажатия будет распространено на любой самый верхний элемент под этим элементом, и никакие другие события мыши не будут доставлены этому элементу.
Если вы переопределяете эту функцию, event по умолчанию будет принят (см. QEvent::accept()), и этот элемент станет захватчиком мыши. Это позволяет элементу получать будущие события перемещения, отпускания и двойного щелчка. Если вы вызовете QEvent::ignore() для event, этот элемент потеряет захват мыши, и event будет распространено на любой самый верхний элемент под ним. Никакие дальнейшие события мыши не будут доставлены этому элементу, если не будет получено новое событие нажатия мыши.
По умолчанию реализация обрабатывает базовые взаимодействия с элементами, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mousePressEvent() в вашей переопределённой реализации.
Событие игнорируется для элементов, которые не являются ни перемещаемыми, ни выделяемыми.
См. также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий отпускания мыши для данного элемента.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
По умолчанию реализация обрабатывает базовые взаимодействия с элементами, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseReleaseEvent() в вашей переопределённой реализации.
Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. См. описание mousePressEvent() для получения подробностей.
См. также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().
void QGraphicsItem::moveBy(qreal dx, qreal dy)
Перемещает элемент на dx точек по горизонтали и dy точек по вертикали. Эта функция эквивалентна вызову setPos(pos() + QPointF(dx, dy)).
qreal QGraphicsItem::opacity() const
Возвращает локальную непрозрачность этого элемента, которая находится в диапазоне от 0.0 (прозрачный) до 1.0 (непрозрачный). Это значение комбинируется со значениями родителя и предков в effectiveOpacity(). Эффективная непрозрачность определяет, как элемент отрисовывается, а также влияет на его видимость при запросе функциями, такими как QGraphicsView::items().
Свойство opacity определяет состояние художника, передаваемого функции paint(). Если элемент кэшируется, то есть ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отрисовке.
По умолчанию непрозрачность равна 1.0; полностью непрозрачный.
Функция была введена в 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 = 0)
Эта функция, обычно вызываемая QGraphicsView, отрисовывает содержимое элемента в локальных координатах.
Переопределите эту функцию в подклассе QGraphicsItem, чтобы предоставить реализацию отрисовки элемента, используя painter. Параметр option предоставляет параметры стиля для элемента, такие как его состояние, область вывода и подсказки уровня детализации. Аргумент widget необязателен. Если указан, он указывает на виджет, на котором осуществляется отрисовка; в противном случае он равен 0. Для кэшированной отрисовки widget всегда равен 0.
void RoundRectItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
} Перо художника по умолчанию имеет ширину 0, а его кисть инициализирована кистью QPalette::Text из палитры устройства отрисовки. Кисть инициализирована кистью QPalette::Window.
Убедитесь, что вся отрисовка ограничивается границами boundingRect(), чтобы избежать артефактов отрисовки (так как QGraphicsView не обрезает художника для вас). В частности, когда QPainter отрисовывает контур фигуры с помощью назначенного QPen, половина контура будет нарисована снаружи, а половина внутри фигуры, которую вы отрисовываете (например, с шириной пера 2 единицы, вы должны рисовать контуры на 1 единицу внутри boundingRect()). QGraphicsItem не поддерживает использование косметических перьев с ненулевой шириной.
Вся отрисовка выполняется в локальных координатах.
Примечание: Обязательно, чтобы элемент всегда перерисовывался точно так же, если не был вызван update(), иначе могут возникнуть визуальные артефакты. Другими словами, два последовательных вызова paint() всегда должны давать один и тот же результат, если не был вызван update() между ними.
Примечание: Включение кеширования для элемента не гарантирует, что paint() будет вызван только один раз фреймворком Graphics View, даже без явного вызова update(). См. документацию setCacheMode() для получения дополнительных сведений.
См. также setCacheMode(), QPen::width(), Координаты элемента и ItemUsesExtendedStyleOption.
QGraphicsItem *QGraphicsItem::panel() const
Возвращает панель элемента или nullptr, если у этого элемента нет панели. Если элемент является панелью, он вернет себя. В противном случае он вернет ближайшего предка, являющегося панелью.
Функция была введена в Qt 4.6.
См. также isPanel() и ItemIsPanel.
QGraphicsItem::PanelModality QGraphicsItem::panelModality() const
Возвращает режим работы для этого элемента.
Функция была введена в Qt 4.6.
См. также setPanelModality().
QGraphicsItem *QGraphicsItem::parentItem() const
Возвращает указатель на родительский элемент этого элемента. Если у этого элемента нет родителя, возвращается nullptr.
См. также setParentItem() и childItems().
QGraphicsObject *QGraphicsItem::parentObject() const
Возвращает указатель на родительский элемент, приведенный к типу QGraphicsObject. Возвращает nullptr, если родительский элемент не является объектом QGraphicsObject.
Функция была добавлена в Qt 4.6.
См. также parentItem() и childItems().
QGraphicsWidget *QGraphicsItem::parentWidget() const
Возвращает указатель на родительский виджет элемента. Родительским виджетом элемента является ближайший родительский элемент, который является виджетом.
Функция была добавлена в Qt 4.4.
См. также parentItem() и childItems().
QPointF QGraphicsItem::pos() const
Возвращает положение элемента в координатах родителя. Если у элемента нет родителя, его положение задаётся в координатах сцены.
Положение элемента описывает его начало (локальная координата (0, 0)) в координатах родителя; эта функция возвращает то же, что и mapToParent(0, 0).
Для удобства можно также вызвать scenePos(), чтобы определить положение элемента в координатах сцены, независимо от его родителя.
См. также x(), y(), setPos(), transform(), и Систему координат виджета отображения графических элементов.
[protected] void QGraphicsItem::prepareGeometryChange()
Подготавливает элемент к изменению геометрии. Вызывайте эту функцию перед изменением области ограничивающей прямоугольника элемента, чтобы сохранить индекс QGraphicsScene актуальным.
prepareGeometryChange() вызовет update(), если это необходимо.
Пример:
void CircleItem::setRadius(qreal newRadius)
{
if (radius != newRadius) {
prepareGeometryChange();
radius = newRadius;
}
} См. также boundingRect().
void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)
Удаляет фильтр событий этого элемента из filterItem.
См. также installSceneEventFilter().
void QGraphicsItem::resetTransform()
Сбрасывает матрицу преобразования этого элемента до единичной матрицы или все свойства преобразования до их значений по умолчанию. Это эквивалентно вызову setTransform(QTransform()).
Функция была добавлена в Qt 4.3.
См. также setTransform() и transform().
qreal QGraphicsItem::rotation() const
Возвращает поворот по часовой стрелке в градусах вокруг оси Z. Значение по умолчанию равно 0 (т.е. элемент не повернут).
Поворот комбинируется с масштабированием элемента scale(), transform() и transformations() для отображения системы координат элемента в системе координат родительского элемента.
Функция была добавлена в Qt 4.6.
См. также setRotation(), transformOriginPoint(), и Преобразования.
qreal QGraphicsItem::scale() const
Возвращает коэффициент масштабирования элемента. Значение коэффициента масштабирования по умолчанию равно 1.0 (т.е. элемент не масштабируется).
Масштабирование комбинируется с вращением элемента rotation(), transform() и transformations() для отображения системы координат элемента в системе координат родительского элемента.
Функция была добавлена в Qt 4.6.
См. также setScale(), rotation() и Преобразования.
QGraphicsScene *QGraphicsItem::scene() const
Возвращает текущую сцену для элемента или nullptr, если элемент не хранится в сцене.
Чтобы добавить или переместить элемент в сцену, вызовите QGraphicsScene::addItem().
QRectF QGraphicsItem::sceneBoundingRect() const
Возвращает ограничивающий прямоугольник этого элемента в координатах сцены, комбинируя sceneTransform() с boundingRect().
См. также boundingRect() и Систему координат виджета отображения графических элементов.
[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)
Этот виртуальный метод получает события для этого элемента. Переопределите этот метод, чтобы перехватить события перед их отправкой специализированным обработчикам событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().
Возвращает true, если событие было распознано и обработано; в противном случае (например, если тип события не был распознан) возвращается false.
event — перехваченное событие.
[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
Фильтры событий для элемента watched. event — отфильтрованное событие.
Переопределение этого метода в подклассе позволяет элементу использоваться в качестве фильтра событий для других элементов, перехватывая все события, отправленные этим элементам, прежде чем они смогут ответить.
Переопределения должны возвращать true, чтобы предотвратить дальнейшую обработку данного события, гарантируя, что оно не будет передано наблюдаемому элементу, или возвращать false, чтобы указать, что событие должно быть распространено дальше системой событий.
См. также installSceneEventFilter().
QPointF QGraphicsItem::scenePos() const
Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).
См. также pos(), sceneTransform(), и Систему координат виджета отображения графических элементов.
QTransform QGraphicsItem::sceneTransform() const
Возвращает матрицу преобразования сцены этого элемента. Эта матрица может использоваться для отображения координат и геометрических фигур из локальной системы координат этого элемента в систему координат сцены. Чтобы отобразить координаты из сцены, необходимо сначала инвертировать возвращённую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // returns QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // returns QPointF(0, 0);
В отличие от transform(), которая возвращает только локальное преобразование элемента, эта функция включает положение элемента (и всех родителей) и все свойства преобразования.
Функция была добавлена в Qt 4.3.
См. также transform(), setTransform(), scenePos(), Систему координат виджета отображения графических элементов и Преобразования.
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
Прокручивает содержимое rect на dx, dy. Если rect — пустой прямоугольник (значение по умолчанию), прокручивается ограничивающий прямоугольник элемента.
Прокрутка предоставляет быструю альтернативу простому перерисовке, когда содержимое элемента (или части элемента) сдвигается вертикально или горизонтально. В зависимости от текущего преобразования и возможностей устройства рисования (т.е. области просмотра) эта операция может состоять из простого перемещения пикселей из одного места в другое с помощью memmove(). В большинстве случаев это быстрее, чем перерисовка всей области.
После прокрутки элемент выведет обновление для новых открытых областей. Если прокрутка не поддерживается (например, вы рисуете в области просмотра OpenGL, которая не использует оптимизации прокрутки), эта функция эквивалентна вызову update(rect).
Примечание: Прокрутка поддерживается только при включённом QGraphicsItem::ItemCoordinateCache; во всех других случаях вызов этой функции эквивалентен вызову update(rect). Если вы уверены, что элемент непрозрачный и не перекрывается другими элементами, вы можете отобразить rect в координатах области просмотра и прокрутить область просмотра.
QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect);
Функция была добавлена в Qt 4.4.
См. также boundingRect().
void QGraphicsItem::setAcceptDrops(bool on)
Если on имеет значение true, этот элемент будет принимать события перетаскивания и опускания; в противном случае он будет прозрачным для таких событий. По умолчанию элементы не принимают события перетаскивания и опускания.
См. также acceptDrops().
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события наведения курсора; в противном случае он будет игнорировать их. По умолчанию элементы не принимают события наведения курсора.
События наведения курсора доставляются, когда нет элемента, который в данный момент является получателем событий мыши. Они отправляются, когда курсор мыши входит в элемент, перемещается внутри него и выходит из элемента. События наведения курсора обычно используются для выделения элемента при входе курсора и для отслеживания курсора мыши при наведении на элемент (эквивалент QWidget::mouseTracking).
Родительские элементы получают события входа наведения курсора перед своими дочерними элементами, а события выхода — после. Однако родительский элемент не получает события выхода наведения курсора, если курсор входит в дочерний элемент; родительский элемент остаётся «под наведением» до тех пор, пока курсор не покинет его область, включая области его дочерних элементов.
Если родительский элемент обрабатывает события дочерних элементов, он будет получать события перемещения курсора при наведении, перемещения при перетаскивании и опускания, поскольку курсор проходит через его дочерние элементы, но он не получает события входа наведения курсора и выхода наведения курсора, а также события входа перетаскивания и выхода перетаскивания от имени своих дочерних элементов.
QGraphicsWidget с декорациями окна будет принимать события наведения курсора независимо от значения acceptHoverEvents().
Функция была добавлена в Qt 4.4.
См. также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события касания; в противном случае он будет игнорировать их. По умолчанию элементы не принимают события касания.
Функция была добавлена в Qt 4.6.
См. также acceptTouchEvents().
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
Устанавливает кнопки мыши buttons, для которых этот элемент принимает события мыши.
По умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он станет элементом захвата мыши, когда для этой кнопки будет доставлено событие нажатия мыши. Однако, если элемент не принимает кнопку мыши, QGraphicsScene перенаправит события мыши первому элементу под ним, который это сделает.
Чтобы отключить события мыши для элемента (т.е. сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
См. также acceptedMouseButtons() и mousePressEvent().
void QGraphicsItem::setActive(bool active)
Если active имеет значение true, и сцена активна, панель этого элемента будет активирована. В противном случае панель деактивируется.
Если элемент не является частью активной сцены, active определит, что произойдёт с панелью, когда сцена станет активной или элемент будет добавлен в сцену. Если имеет значение true, панель элемента будет активирована, когда элемент будет добавлен в сцену или сцена будет активирована. В противном случае элемент останется неактивным независимо от состояния активации сцены.
Функция была добавлена в Qt 4.6.
См. также isPanel(), QGraphicsScene::setActivePanel() и QGraphicsScene::isActive().
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
Устанавливает точность области ограничивающей области до granularity; значение от 0 до 1 включительно. Значение по умолчанию равно 0 (т.е. наименьшая точность, где ограничивающая область соответствует прямоугольнику ограничивающей области элемента).
Точность используется функцией boundingRegion() для расчёта того, насколько подробной должна быть ограничивающая область элемента. Максимально достижимая точность — 1, где boundingRegion() вернёт наилучший контур, возможный для устройства (например, для QGraphicsView 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. Курсор мыши примет эту форму, когда он будет над этим элементом. Список предопределённых объектов курсора см. в списке предопределённых объектов курсора.
Элемент редактора может захотеть использовать курсор I-пучка:
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, могут принимать фокус клавиатуры.
Если этот элемент не виден, не активен или не ассоциирован со сценой, он не получит фокус ввода сразу. Однако он будет зарегистрирован как предпочтительный элемент фокуса для своего поддерева элементов, если он позже станет видимым.
В результате вызова этой функции этот элемент получит событие фокуса с focusReason. Если другой элемент уже имеет фокус, этот элемент сначала получит событие выхода из фокуса, указывающее, что он потерял фокус ввода.
См. также clearFocus(), hasFocus(), focusItem() и focusProxy().
void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
Устанавливает фокус-заместителя элемента на item.
Если у элемента есть фокус-заместитель, фокус-заместитель получит фокус ввода, когда элемент получит фокус ввода. Сам элемент по-прежнему будет иметь фокус (т.е., hasFocus() вернет true), но только фокус-заместитель получит ввод с клавиатуры.
Фокус-заместитель может сам иметь фокус-заместителя, и так далее. В таком случае ввод с клавиатуры будет обрабатываться внешним фокус-заместителем.
Фокус-заместитель item должен принадлежать той же сцене, что и этот элемент.
Эта функция была добавлена в Qt 4.6.
См. также focusProxy(), setFocus() и hasFocus().
void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)
Устанавливает effect в качестве эффекта элемента. Если на этом элементе уже установлен эффект, QGraphicsItem удалит существующий эффект перед установкой нового effect. Вы можете удалить существующий эффект, вызвав setGraphicsEffect(nullptr).
Если effect является установленным эффектом на другом элементе, setGraphicsEffect() удалит эффект с элемента и установит его на этот элемент.
QGraphicsItem принимает владение effect.
Примечание: Эта функция применит эффект к себе и всем своим дочерним элементам.
Эта функция была добавлена в Qt 4.6.
См. также graphicsEffect().
void QGraphicsItem::setGroup(QGraphicsItemGroup *group)
Добавляет этот элемент в группу элементов group. Если group равен nullptr, этот элемент удаляется из любой текущей группы и добавляется как дочерний элемент родительского элемента предыдущей группы.
См. также group() и QGraphicsScene::createItemGroup().
void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
Устанавливает текущие подсказки метода ввода для этого элемента на hints.
Эта функция была добавлена в Qt 4.6.
См. также inputMethodHints() и inputMethodQuery().
void QGraphicsItem::setOpacity(qreal opacity)
Устанавливает локальную прозрачность этого элемента, от 0,0 (прозрачный) до 1,0 (непрозрачный). Локальная непрозрачность элемента объединяется с непрозрачностью родительских и предковых элементов в effectiveOpacity().
По умолчанию прозрачность передается от родителя к дочернему элементу, поэтому если прозрачность родителя равна 0,5, а дочернего элемента также 0,5, эффективная прозрачность дочернего элемента будет равна 0,25.
Свойство opacity определяет состояние художника, переданного функции 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().
Масштабирование комбинируется с поворотом rotation(), преобразованием transform() и преобразованиями transformations() для отображения системы координат элемента относительно родительского элемента.
Функция была введена в 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)
Устанавливает список графических 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() для возвращения простой прямоугольной формы, но подклассы могут переопределить эту функцию, чтобы вернуть более точную форму для элементов, не являющихся прямоугольниками. Например, круглый элемент может выбрать возврат эллиптической формы для лучшего обнаружения столкновений. Например:
QPainterPath RoundItem::shape() const
{
QPainterPath path;
path.addEllipse(boundingRect());
return path;
} Контур формы может изменяться в зависимости от ширины и стиля пера, используемого при рисовании. Если вы хотите включить этот контур в форму элемента, вы можете создать форму из контура с помощью QPainterPathStroker.
Эта функция вызывается в реализациях по умолчанию для contains() и collidesWithPath().
См. также boundingRect(), contains(), prepareGeometryChange() и QPainterPathStroker.
void QGraphicsItem::show()
Отображает элемент (элементы отображаются по умолчанию).
Эта вспомогательная функция эквивалентна вызову setVisible(true).
См. также hide() и setVisible().
void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)
Размещает этот элемент перед элементом sibling, который должен быть элементом-«братом» (т. е., два элемента должны иметь одного родительского элемента или быть верхнеуровневыми элементами). Элемент sibling должен иметь тот же значение Z, что и этот элемент, в противном случае вызов этой функции не окажет никакого влияния.
По умолчанию все элементы-«братья» размещаются в порядке вставки (т. е., первый добавленный элемент рисуется перед следующим добавленным элементом). Если значения Z двух элементов отличаются, то элемент с наибольшим значением Z рисуется поверх других. Когда значения Z одинаковы, порядок вставки определяет порядок размещения.
Эта функция была введена в Qt 4.6.
См. также setZValue(), ItemStacksBehindParent и Сортировка.
QGraphicsObject *QGraphicsItem::toGraphicsObject()
Возвращает элемент графического объекта, преобразованный к QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.
Эта функция была введена в Qt 4.6.
const QGraphicsObject *QGraphicsItem::toGraphicsObject() const
Возвращает элемент графического объекта, преобразованный к QGraphicsObject, если класс фактически является графическим объектом, в противном случае 0.
Эта функция была введена в Qt 4.6.
QString QGraphicsItem::toolTip() const
Возвращает всплывающую подсказку элемента или пустой QString, если всплывающая подсказка не задана.
См. также setToolTip() и QToolTip.
QGraphicsItem *QGraphicsItem::topLevelItem() const
Возвращает верхнеуровневый элемент этого элемента. Верхнеуровневый элемент — это самый верхний родительский элемент, у которого родительский элемент является nullptr. Если у элемента нет родителя, возвращается его собственный указатель (т. е., верхнеуровневый элемент — это его собственный верхнеуровневый элемент).
См. также parentItem().
QGraphicsWidget *QGraphicsItem::topLevelWidget() const
Возвращает указатель на виджет верхнего уровня элемента (т. е., предка, у которого родительским элементом является nullptr или чей родитель не является виджетом), или nullptr, если у этого элемента нет виджета верхнего уровня. Если элемент сам является виджетом верхнего уровня, эта функция возвращает указатель на сам элемент.
Эта функция была введена в Qt 4.4.
QTransform QGraphicsItem::transform() const
Возвращает матрицу преобразования этого элемента.
Матрица преобразования комбинируется с вращением rotation(), масштабированием scale() и преобразованиями transformations() в комбинированные преобразования для элемента.
Матрица преобразования по умолчанию — это единичная матрица.
Эта функция была введена в Qt 4.3.
См. также setTransform() и sceneTransform().
QPointF QGraphicsItem::transformOriginPoint() const
Возвращает точку начала преобразования в координатах элемента.
По умолчанию это QPointF(0,0).
Эта функция была введена в Qt 4.6.
См. также setTransformOriginPoint() и Преобразования.
QList<QGraphicsTransform *> QGraphicsItem::transformations() const
Возвращает список графических преобразований, которые в настоящее время применяются к этому элементу.
QGraphicsTransform предназначен для применения и управления цепочкой отдельных операций преобразования над элементом. Он особенно полезен при анимации, где каждая операция преобразования должна интерполироваться независимо или по-разному.
Преобразования комбинируются с вращением rotation(), масштабированием scale() и преобразованием transform() для отображения системы координат элемента в родительском элементе.
Эта функция была введена в Qt 4.6.
См. также setTransformations(), scale(), rotation(), transformOriginPoint() и Преобразования.
[virtual] int QGraphicsItem::type() const
Возвращает тип элемента в виде целого числа. Все стандартные классы graphicsitem ассоциированы с уникальным значением; см. QGraphicsItem::Type. Эта информация о типе используется функцией qgraphicsitem_cast() для различения типов.
Реализация по умолчанию (в QGraphicsItem) возвращает UserType.
Для использования qgraphicsitem_cast() с настраиваемым элементом переопределите эту функцию и объявите значение перечисления Type, равное типу вашего настраиваемого элемента. Пользовательские элементы должны возвращать значение, большее или равное UserType (65536).
Например:
class CustomItem : public QGraphicsItem
{
public:
enum { Type = UserType + 1 };
int type() const override
{
// Enable the use of qgraphicsitem_cast with this item.
return Type;
}
...
}; См. также UserType.
void QGraphicsItem::ungrabKeyboard()
Освобождает захват клавиатуры.
Эта функция была введена в Qt 4.4.
См. также grabKeyboard() и ungrabMouse().
void QGraphicsItem::ungrabMouse()
Освобождает захват мыши.
Эта функция была введена в Qt 4.4.
См. также grabMouse() и ungrabKeyboard().
void QGraphicsItem::unsetCursor()
Очищает курсор из этого элемента.
См. также hasCursor() и setCursor().
void QGraphicsItem::update(const QRectF &rect = QRectF())
Планирует перерисовку области, охватываемой rect, в этом элементе. Вы можете вызывать эту функцию всякий раз, когда ваш элемент требует перерисовки, например, при изменении внешнего вида или размера.
Эта функция не вызывает немедленную перерисовку; вместо этого она планирует запрос на перерисовку, который обрабатывается QGraphicsView после того, как управление достигнет цикла событий. Элемент будет перерисован только в том случае, если он виден в любом связанном представлении.
В качестве побочного эффекта перерисовки элемента, другие элементы, которые перекрывают область rect, также могут быть перерисованы.
Если элемент невидим (т. е., isVisible() возвращает false), эта функция ничего не делает.
См. также paint() и boundingRect().
void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)
Это перегруженная функция.
Эта вспомогательная функция эквивалентна вызову update(QRectF(x, y, width, height)).
[protected] void QGraphicsItem::updateMicroFocus()
Обновляет микрофокус элемента.
Эта функция была введена в Qt 4.7.
См. также QInputMethod.
[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)
Обработчик событий для события event может быть переопределён для получения событий прокрутки для этого элемента. Если вы переопределите эту функцию, event будет принят по умолчанию.
Если вы игнорируете событие (например, вызвав QEvent::ignore()), оно будет распространяться на любые элементы ниже этого элемента. Если ни один элемент не примет событие, оно будет проигнорировано сценой и распространится на представление (например, на вертикальную полосу прокрутки представления).
По умолчанию событие игнорируется.
См. также sceneEvent().
QGraphicsWidget *QGraphicsItem::window() const
Возвращает окно элемента или nullptr, если у этого элемента нет окна. Если элемент является окном, он вернет себя. В противном случае он вернет ближайшего предка, являющегося окном.
Эта функция была добавлена в Qt 4.4.
См. также QGraphicsWidget::isWindow().
qreal QGraphicsItem::x() const
Эта функция-удобство эквивалентна вызову pos().x().
qreal QGraphicsItem::y() const
Эта функция-удобство эквивалентна вызову pos().y().
qreal QGraphicsItem::zValue() const
Возвращает значение Z элемента. Значение Z влияет на порядок отображения дочерних (соседних) элементов.
Значение Z по умолчанию равно 0.
См. также setZValue(), Сортировка, stackBefore() и ItemStacksBehindParent.
Связанные нечлены
template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)
Возвращает заданный item, приведенный к типу T, если item имеет тип T; в противном случае возвращается nullptr.
Примечание: Чтобы эта функция работала правильно с пользовательскими элементами, переопределите функцию type() для каждого пользовательского подкласса QGraphicsItem.
Эта функция была добавлена в Qt 4.2.
См. также QGraphicsItem::type() и QGraphicsItem::UserType.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qgraphicsitem.html