Класс QGraphicsItem
Класс QGraphicsItem является базовым классом для всех графических элементов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsItem> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследуется от: | QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem |
Этот класс был представлен в Qt 4.2.
Открытые типы
| Перечисление | 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 } |
Открытые функции
| QGraphicsItem(QGraphicsItem *parent = nullptr) | |
| virtual | ~QGraphicsItem() |
| bool | принятьЗагрузки() const |
| bool | принятьСобытияНаведения() const |
| bool | принятьСобытияПрикосновения() const |
| Qt::MouseButtons | принятыеКнопкиМыши() const |
| virtual void | продвинуть(int phase) |
| virtual QRectF | прямоугольникОграничения() const = 0 |
| QRegion | областьОграничения(const QTransform &itemToDeviceTransform) const |
| qreal | размерДетализацииОбластиОграничения() const |
| QGraphicsItem::CacheMode | режимКэширования() const |
| QList<QGraphicsItem *> | дочерниеЭлементы() const |
| QRectF | прямоугольникОграниченияПотомков() const |
| void | очиститьФокус() |
| QPainterPath | путьОбрезки() const |
| virtual bool | пересекаетсяСЭлементом(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| virtual bool | пересекаетсяССПуть(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | пересекающиесяЭлементы(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QGraphicsItem * | общийПредковыйЭлемент(const QGraphicsItem *other) const |
| virtual bool | содержит(const QPointF &point) const |
| QCursor | курсор() const |
| QVariant | данные(int key) const |
| QTransform | преобразованиеУстройства(const QTransform &viewportTransform) const |
| qreal | эффективноеНепрозрачность() const |
| void | гарантироватьВидимость(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50) |
| void | гарантироватьВидимость(qreal x, qreal y, qreal w, qreal h, int xmargin = ..., int ymargin = ...) |
| bool | фильтроватьСобытияПотомков() const |
| QGraphicsItem::GraphicsItemFlags | флаги() const |
| QGraphicsItem * | элементФокуса() const |
| QGraphicsItem * | заместительФокуса() const |
| void | захватитьКлавиатуру() |
| void | захватитьМышь() |
| QGraphicsEffect * | эффектГрафики() const |
| QGraphicsItemGroup * | группа() const |
| bool | имеетКурсор() const |
| bool | имеетФокус() const |
| void | скрыть() |
| Qt::InputMethodHints | настройкиВвода() const |
| void | установитьФильтрСобытийСцены(QGraphicsItem *filterItem) |
| bool | активен() const |
| bool | являетсяПредком(const QGraphicsItem *child) const |
| bool | заблокированМодальнымПанелью(QGraphicsItem **blockingPanel = nullptr) const |
| bool | обрезан() const |
| bool | активен() const |
| bool | скрыт(const QRectF &rect = QRectF()) const |
| bool | скрыт(qreal x, qreal y, qreal w, qreal h) const |
| virtual bool | скрытЭлементом(const QGraphicsItem *item) const |
| bool | являетсяПанелью() const |
| bool | выделен() const |
| bool | подМышью() const |
| bool | виден() const |
| bool | виденПредку(const QGraphicsItem *parent) const |
| bool | являетсяВиджетом() const |
| bool | являетсяОкном() const |
| QTransform | преобразованиеЭлемента(const QGraphicsItem *other, bool *ok = nullptr) const |
| QPointF | преобразоватьИзЭлемента(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | преобразоватьИзЭлемента(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | преобразоватьИзЭлемента(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromParent(const QPointF &point) const |
| QPolygonF | mapFromParent(const QRectF &rect) const |
| QPolygonF | mapFromParent(const QPolygonF &polygon) const |
| QPainterPath | mapFromParent(const QPainterPath &path) const |
| QPointF | mapFromParent(qreal x, qreal y) const |
| QPolygonF | mapFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapFromScene(const QPointF &point) const |
| QPolygonF | mapFromScene(const QRectF &rect) const |
| QPolygonF | mapFromScene(const QPolygonF &polygon) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPointF | mapFromScene(qreal x, qreal y) const |
| QPolygonF | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromParent(const QRectF &rect) const |
| QRectF | mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectFromScene(const QRectF &rect) const |
| QRectF | mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QRectF | mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToParent(const QRectF &rect) const |
| QRectF | mapRectToParent(qreal x, qreal y, qreal w, qreal h) const |
| QRectF | mapRectToScene(const QRectF &rect) const |
| QRectF | mapRectToScene(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToItem(const QGraphicsItem *item, const QPointF &point) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QRectF &rect) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const |
| QPainterPath | mapToItem(const QGraphicsItem *item, const QPainterPath &path) const |
| QPointF | mapToItem(const QGraphicsItem *item, qreal x, qreal y) const |
| QPolygonF | mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToParent(const QPointF &point) const |
| QPolygonF | mapToParent(const QRectF &rect) const |
| QPolygonF | mapToParent(const QPolygonF &polygon) const |
| QPainterPath | mapToParent(const QPainterPath &path) const |
| QPointF | mapToParent(qreal x, qreal y) const |
| QPolygonF | mapToParent(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToScene(const QPointF &point) const |
| QPolygonF | mapToScene(const QRectF &rect) const |
| QPolygonF | mapToScene(const QPolygonF &polygon) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(qreal x, qreal y) const |
| QPolygonF | mapToScene(qreal x, qreal y, qreal w, qreal h) const |
| void | moveBy(qreal dx, qreal dy) |
| qreal | opacity() const |
| virtual QPainterPath | opaqueArea() const |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...) = 0 |
| QGraphicsItem * | panel() const |
| QGraphicsItem::PanelModality | panelModality() const |
| QGraphicsItem * | parentItem() const |
| QGraphicsObject * | parentObject() const |
| QGraphicsWidget * | parentWidget() const |
| QPointF | pos() const |
| void | removeSceneEventFilter(QGraphicsItem *filterItem) |
| void | resetTransform() |
| qreal | rotation() const |
| qreal | scale() const |
| QGraphicsScene * | scene() const |
| QRectF | sceneBoundingRect() const |
| QPointF | scenePos() const |
| QTransform | sceneTransform() const |
| void | scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()) |
| void | setAcceptDrops(bool on) |
| void | setAcceptHoverEvents(bool enabled) |
| void | setAcceptTouchEvents(bool enabled) |
| void | setAcceptedMouseButtons(Qt::MouseButtons buttons) |
| void | setActive(bool active) |
| void | setBoundingRegionGranularity(qreal granularity) |
| void | setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize()) |
| void | setCursor(const QCursor &cursor) |
| void | setData(int key, const QVariant &value) |
| void | setEnabled(bool enabled) |
| void | setFiltersChildEvents(bool enabled) |
| void | setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true) |
| void | setFlags(QGraphicsItem::GraphicsItemFlags flags) |
| void | setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason) |
| void | setFocusProxy(QGraphicsItem *item) |
| void | setGraphicsEffect(QGraphicsEffect *effect) |
| void | setGroup(QGraphicsItemGroup *group) |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
| void | setOpacity(qreal opacity) |
| void | setPanelModality(QGraphicsItem::PanelModality panelModality) |
| void | setParentItem(QGraphicsItem *newParent) |
| void | setPos(const QPointF &pos) |
| void | setPos(qreal x, qreal y) |
| void | setRotation(qreal angle) |
| void | setScale(qreal factor) |
| void | setSelected(bool selected) |
| void | setToolTip(const QString &toolTip) |
| void | setTransform(const QTransform &matrix, bool combine = false) |
| void | setTransformOriginPoint(const QPointF &origin) |
| void | setTransformOriginPoint(qreal x, qreal y) |
| void | setTransformations(const QList<QGraphicsTransform *> &transformations) |
| void | setVisible(bool visible) |
| void | setX(qreal x) |
| void | setY(qreal y) |
| void | setZValue(qreal z) |
| virtual QPainterPath | shape() const |
| void | show() |
| void | stackBefore(const QGraphicsItem *sibling) |
| QGraphicsObject * | toGraphicsObject() |
| const QGraphicsObject * | toGraphicsObject() const |
| QString | toolTip() const |
| QGraphicsItem * | topLevelItem() const |
| QGraphicsWidget * | topLevelWidget() const |
| QTransform | transform() const |
| QPointF | transformOriginPoint() const |
| QList<QGraphicsTransform *> | transformations() const |
| virtual int | type() const |
| void | ungrabKeyboard() |
| void | ungrabMouse() |
| void | unsetCursor() |
| void | update(const QRectF &rect = QRectF()) |
| void | update(qreal x, qreal y, qreal width, qreal height) |
| QGraphicsWidget * | window() const |
| qreal | x() const |
| qreal | y() const |
| qreal | zValue() const |
Protected Functions
| virtual void | contextMenuEvent(QGraphicsSceneContextMenuEvent *event) |
| virtual void | dragEnterEvent(QGraphicsSceneDragDropEvent *event) |
| virtual void | dragLeaveEvent(QGraphicsSceneDragDropEvent *event) |
| virtual void | dragMoveEvent(QGraphicsSceneDragDropEvent *event) |
| virtual void | dropEvent(QGraphicsSceneDragDropEvent *event) |
| virtual void | focusInEvent(QFocusEvent *event) |
| virtual void | focusOutEvent(QFocusEvent *event) |
| virtual void | hoverEnterEvent(QGraphicsSceneHoverEvent *event) |
| virtual void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) |
| virtual void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) |
| virtual void | inputMethodEvent(QInputMethodEvent *event) |
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const |
| virtual QVariant | itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) |
| virtual void | keyPressEvent(QKeyEvent *event) |
| virtual void | keyReleaseEvent(QKeyEvent *event) |
| virtual void | mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) |
| virtual void | mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
| virtual void | mousePressEvent(QGraphicsSceneMouseEvent *event) |
| virtual void | mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
| void | prepareGeometryChange() |
| virtual bool | sceneEvent(QEvent *event) |
| virtual bool | sceneEventFilter(QGraphicsItem *watched, QEvent *event) |
| void | updateMicroFocus() |
| virtual void | wheelEvent(QGraphicsSceneWheelEvent *event) |
Related Non-Members
| T | qgraphicsitem_cast(QGraphicsItem *item) |
Detailed Description
Он предоставляет лёгкую основу для написания собственных пользовательских элементов. Это включает в себя определение геометрии элемента, обнаружение столкновений, его реализацию рисования и взаимодействие с элементом через обработчики событий. 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 раза относительно своего исходного размера, дочерние элементы также будут в два раза больше. Преобразование элемента не влияет на его собственную локальную геометрию; все геометрические функции (например, contains(), update() и все функции отображения) по-прежнему работают в локальных координатах. Для удобства QGraphicsItem предоставляет функции sceneTransform(), которая возвращает общую матрицу преобразования элемента (включая его положение и положения и преобразования всех родителей), и scenePos(), которая возвращает его положение в координатах сцены. Для сброса матрицы элемента вызовите resetTransform().
Некоторые операции преобразования дают разные результаты в зависимости от порядка их применения. Например, если масштабировать преобразование, а затем повернуть его, результат может отличаться от результата, если преобразование было повернуто сначала. Однако порядок задания свойств преобразования в QGraphicsItem не влияет на результирующее преобразование; QGraphicsItem всегда применяет свойства в определённом, фиксированном порядке:
- Применяется базовое преобразование элемента (transform())
- Список преобразований элемента применяется в порядке следования (transformations())
- Элемент вращается относительно точки начала преобразования (rotation(), transformOriginPoint())
- Элемент масштабируется относительно точки начала преобразования (scale(), transformOriginPoint())
Отрисовка
Функция paint() вызывается QGraphicsView для отрисовки содержимого элемента. У элемента нет собственного фона или заливки по умолчанию; всё, что находится за элементом, будет просвечивать сквозь все области, которые явно не отрисованы в этой функции. Вы можете вызвать update() для планирования перерисовки, необязательно передав прямоугольник, который необходимо перерисовать. В зависимости от того, виден ли элемент в представлении, он может или не может быть перерисован; нет эквивалента QWidget::repaint() в QGraphicsItem.
Элементы отрисовываются представлением, начиная с родительских элементов, а затем отрисовываются дочерние элементы в порядке возрастания порядка наложения. Вы можете установить порядок наложения элемента, вызвав setZValue(), и проверить его, вызвав zValue(), где элементы с низкими значениями z отрисовываются перед элементами с высокими значениями z. Порядок наложения применяется к соседним элементам; родители всегда отрисовываются перед своими детьми.
Сортировка
Все элементы отрисовываются в определённом стабильном порядке, и этот же порядок определяет, какие элементы получат ввод мыши в первую очередь, когда вы щелкнёте по сцене. Обычно вам не нужно беспокоиться о сортировке, так как элементы следуют «естественному порядку», следуя логической структуре сцены.
Дочерние элементы элемента накладываются поверх родительского элемента, а соседние элементы накладываются в порядке вставки (т.е. в том же порядке, в котором они были добавлены в сцену или в родительский элемент). Если вы добавите элемент A, а затем B, то B будет поверх A. Если затем вы добавите C, порядок наложения элементов будет A, затем B, затем C.
В этом примере показан порядок наложения всех конечностей робота из примера Drag and Drop Robot. Туловище является корневым элементом (все остальные элементы являются дочерними или потомками туловища), поэтому оно отрисовывается первым. Затем отрисовывается голова, так как это первый элемент в списке дочерних элементов туловища. Затем рисуется левая верхняя рука. Так как нижняя рука является дочерним элементом верхней руки, нижняя рука отрисовывается затем, за ней — следующая сестра верхней руки, которая является правой верхней рукой, и так далее.
Для продвинутых пользователей существуют способы изменения того, как сортируются ваши элементы:
- Вы можете вызвать setZValue() для элемента, чтобы явно расположить его поверх или под другими соседними элементами. Значение Z по умолчанию для элемента равно 0. Элементы с одинаковым значением Z накладываются в порядке вставки.
- Вы можете вызвать stackBefore(), чтобы изменить порядок списка дочерних элементов. Это напрямую изменит порядок вставки.
- Вы можете установить флаг ItemStacksBehindParent, чтобы поместить дочерний элемент позади своего родительского элемента.
Порядок наложения двух соседних элементов также учитывается для дочерних и потомков каждого элемента. Таким образом, если один элемент находится поверх другого, все его дочерние элементы также будут накладываться поверх всех дочерних элементов другого элемента.
События
QGraphicsItem получает события от QGraphicsScene через виртуальную функцию sceneEvent(). Эта функция распределяет наиболее распространённые события по набору удобных обработчиков событий:
- contextMenuEvent() обрабатывает события контекстного меню
- focusInEvent() и focusOutEvent() обрабатывают события ввода и выхода фокуса
- hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent() обрабатывают события ввода, перемещения и выхода с области наведения
- inputMethodEvent() обрабатывает события ввода для поддержки доступности
- keyPressEvent() и keyReleaseEvent() обрабатывают события нажатия и отпускания клавиш
- mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и mouseDoubleClickEvent() обрабатывают события нажатия, перемещения, отпускания, щелчка и двойного щелчка мыши
Вы можете фильтровать события для любого другого элемента, установив фильтры событий. Эта функциональность отделена от стандартных фильтров событий Qt (см. QObject::installEventFilter()), которые работают только с подклассами QObject. После установки вашего элемента в качестве фильтра событий для другого элемента, вызвав installSceneEventFilter(), отфильтрованные события будут получены виртуальной функцией sceneEventFilter(). Вы можете удалить фильтры событий элемента, вызвав removeSceneEventFilter().
Пользовательские данные
Иногда бывает полезно зарегистрировать пользовательские данные с элементом, будь то пользовательский элемент или стандартный. Вы можете вызвать setData() для любого элемента, чтобы сохранить данные в нём с помощью пары ключ-значение (ключ — целое число, а значение — QVariant). Чтобы получить пользовательские данные из элемента, вызовите data(). Эта функциональность полностью не затрагивается Qt; она предоставляется для удобства пользователя.
См. также QGraphicsScene, QGraphicsView и Графическая система отображения.
Документация по типам членов
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() на элементе не оказывает никакого влияния). Вы должны установить этот флаг на элементах, которые не нуждаются в отрисовке, чтобы убедиться, что вид Graphics View избегает ненужной подготовки к отрисовке. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemSendsGeometryChanges |
0x800 |
Элемент включает уведомления itemChange() для ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, ItemTransformHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange и ItemTransformOriginPointHasChanged. По соображениям производительности эти уведомления отключены по умолчанию. Вы должны включить этот флаг, чтобы получать уведомления о изменениях позиции и преобразования. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemAcceptsInputMethod |
0x1000 |
Элемент поддерживает методы ввода, обычно используемые для азиатских языков. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemNegativeZStacksBehindParent |
0x2000 |
Элемент автоматически располагается позади родительского элемента, если его значение z отрицательное. Этот флаг позволяет setZValue() переключать ItemStacksBehindParent. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemIsPanel |
0x4000 |
Элемент является панелью. Панель предоставляет обработку активации и фокуса содержимого. Одновременно может быть активной только одна панель (см. QGraphicsItem::isActive()). Когда активных панелей нет, QGraphicsScene активирует все элементы, которые не являются панелями. Элементы окон (т.е., QGraphicsItem::isWindow() возвращает true) являются панелями. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemSendsScenePositionChanges |
0x10000 |
Элемент включает уведомления itemChange() для ItemScenePositionHasChanged. По соображениям производительности эти уведомления отключены по умолчанию. Вы должны включить этот флаг, чтобы получать уведомления о изменениях положения на сцене. Этот флаг был введён в Qt 4.6. |
QGraphicsItem::ItemContainsChildrenInShape |
0x80000 |
Этот флаг указывает, что все прямые или косвенные дочерние элементы элемента рисуются только в пределах формы элемента. В отличие от ItemClipsChildrenToShape, это ограничение не выполняется. Установите ItemContainsChildrenInShape, когда вы вручную обеспечиваете, что отрисовка ограничена формой элемента, и хотите избежать затрат, связанных с выполнением обрезки. Установка этого флага обеспечивает более эффективную отрисовку и обнаружение столкновений. Флаг отключен по умолчанию. |
Примечание: Если оба флага, этот и ItemClipsChildrenToShape, установлены, обрезка будет выполнена. Это эквивалентно установке только ItemClipsChildrenToShape.
Этот флаг был введён в Qt 5.4.
Тип GraphicsItemFlags является псевдонимом для QFlags<GraphicsItemFlag>. Он хранит логическое ИЛИ сочетание значений GraphicsItemFlag.
перечисление QGraphicsItem::PanelModality
Это перечисление определяет поведение модальной панели. Модальная панель — это панель, которая блокирует ввод на другие панели. Обратите внимание, что элементы, являющиеся дочерними элементами модальной панели, не блокируются.
Значения:
| Константа | Значение | Описание |
|---|---|---|
QGraphicsItem::NonModal |
0 |
Панель не является модальной и не блокирует ввод на другие панели. Это значение по умолчанию для панелей. |
QGraphicsItem::PanelModal |
1 |
Панель является модальной для иерархии одного элемента и блокирует ввод на его родительскую панель, все родительские панели и всех братьев и сестёр родительской и родительских панелей. |
QGraphicsItem::SceneModal |
2 |
Окно является модальным для всей сцены и блокирует ввод на все панели. |
Это перечисление было введено или изменено в Qt 4.6.
См. также QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality(), и QGraphicsItem::ItemIsPanel.
END_OF_DOCUMENT_MARKERenum 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()
Убирает фокус ввода с клавиатуры у элемента.
Если у него есть фокус, элементу отправляется событие потери фокуса, чтобы сообщить ему об этом.
Только элементы, установившие флаг 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 = ..., int ymargin = ...)
Эта вспомогательная функция эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
bool QGraphicsItem::filtersChildEvents() const
Возвращает true, если этот элемент фильтрует события дочерних элементов (т.е. все события, предназначенные для его дочерних элементов, вместо этого отправляются этому элементу); в противном случае возвращается false.
Значение по умолчанию — false; события дочерних элементов не фильтруются.
Эта функция была добавлена в Qt 4.6.
См. также setFiltersChildEvents().
QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const
Возвращает флаги этого элемента. Флаги описывают, какие настраиваемые функции элемента включены. Например, если флаги включают ItemIsFocusable, элемент может получать фокус.
По умолчанию флаги не включены.
См. также setFlags() и setFlag().
[virtual protected] void QGraphicsItem::focusInEvent(QFocusEvent *event)
Этот обработчик событий event может быть переопределен для получения событий фокусировки для данного элемента. Реализация по умолчанию вызывает ensureVisible().
См. также focusOutEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusItem() const
Если у этого элемента, дочернего элемента или потомка этого элемента в данный момент есть фокус, эта функция вернёт указатель на этот элемент. Если ни один потомок не имеет фокуса, возвращается nullptr.
Эта функция была добавлена в Qt 4.6.
См. также hasFocus(), setFocus() и QWidget::focusWidget().
[virtual protected] void QGraphicsItem::focusOutEvent(QFocusEvent *event)
Этот обработчик событий event может быть переопределен для получения событий выхода из фокуса для данного элемента. Реализация по умолчанию ничего не делает.
См. также focusInEvent(), sceneEvent() и setFocus().
QGraphicsItem *QGraphicsItem::focusProxy() const
Возвращает прокси-элемент фокуса этого элемента или nullptr, если у этого элемента нет прокси-элемента фокуса.
Эта функция была добавлена в Qt 4.6.
См. также setFocusProxy(), setFocus() и hasFocus().
void QGraphicsItem::grabKeyboard()
Захватывает ввод с клавиатуры.
Элемент будет получать все события клавиатуры для сцены до тех пор, пока не произойдёт одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabKeyboard()
- Другой элемент вызывает grabKeyboard(); элемент получит обратно захват клавиатуры, когда другой элемент вызовет ungrabKeyboard().
Когда элемент получает захват клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет захват клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события могут использоваться для обнаружения случаев, когда ваш элемент получает или теряет захват клавиатуры помимо получения фокуса.
Почти никогда нет необходимости явно захватывать клавиатуру в Qt, так как Qt делает это разумно. В частности, Qt захватывает клавиатуру, когда ваш элемент получает фокус, и отпускает её, когда ваш элемент теряет фокус или когда элемент скрыт.
Обратите внимание, что только видимые элементы могут захватывать ввод с клавиатуры. Вызов grabKeyboard() для невидимого элемента не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была добавлена в Qt 4.4.
См. также ungrabKeyboard(), grabMouse() и setFocus().
void QGraphicsItem::grabMouse()
Захватывает ввод с мыши.
Этот элемент будет получать все события мыши для сцены до тех пор, пока не произойдет одно из следующих событий:
- Элемент становится невидимым
- Элемент удаляется из сцены
- Элемент удаляется
- Элемент вызывает ungrabMouse()
- Другой элемент вызывает grabMouse(); элемент получит обратно захват мыши, когда другой элемент вызовет ungrabMouse().
Когда элемент получает захват мыши, он получает событие QEvent::GrabMouse. Когда он теряет захват мыши, он получает событие QEvent::UngrabMouse. Эти события могут использоваться для обнаружения случаев, когда ваш элемент получает или теряет захват мыши помимо получения событий нажатия кнопок мыши.
Почти никогда нет необходимости явно захватывать мышь в Qt, так как Qt делает это разумно. В частности, Qt захватывает мышь при нажатии кнопки мыши и держит её захваченной до отпускания последней кнопки мыши. Кроме того, виджеты Qt::Popup неявно вызывают grabMouse() при отображении и ungrabMouse() при скрытии.
Обратите внимание, что только видимые элементы могут захватывать ввод с мыши. Вызов grabMouse() для невидимого элемента не имеет эффекта.
События клавиатуры не затрагиваются.
См. также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().
QGraphicsEffect *QGraphicsItem::graphicsEffect() const
Возвращает указатель на эффект этого элемента, если он есть; в противном случае nullptr.
Эта функция была добавлена в Qt 4.6.
См. также setGraphicsEffect().
QGraphicsItemGroup *QGraphicsItem::group() const
Возвращает указатель на группу элементов этого элемента или nullptr, если этот элемент не является членом группы.
См. также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
bool QGraphicsItem::hasCursor() const
Возвращает true, если для данного элемента установлен курсор; в противном случае возвращает false.
По умолчанию у элементов курсор не установлен. cursor() вернёт стандартный курсор указателя.
См. также unsetCursor().
bool QGraphicsItem::hasFocus() const
Возвращает true, если данный элемент активен и он или его заместитель фокуса имеет фокус клавиатуры; в противном случае возвращает false.
См. также focusItem(), setFocus(), QGraphicsScene::setFocusItem() и isActive().
void QGraphicsItem::hide()
Скрывает элемент (элементы отображаются по умолчанию).
Эта функция-удобство эквивалентна вызову setVisible(false).
См. также show() и setVisible().
[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий входа в область наведения для данного элемента. По умолчанию выполняется вызов update(); в противном случае ничего не делается.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий выхода из области наведения для данного элемента. По умолчанию выполняется вызов update(); в противном случае ничего не делается.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий перемещения в области наведения для данного элемента. По умолчанию ничего не выполняется.
Вызов QEvent::ignore() или QEvent::accept() для event не оказывает никакого эффекта.
См. также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
[virtual protected] void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий ввода для данного элемента. По умолчанию событие игнорируется.
См. также inputMethodQuery() и sceneEvent().
Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
Возвращает текущие подсказки ввода для данного элемента.
Подсказки ввода имеют значение только для элементов ввода. Подсказки используются методом ввода для указания, как он должен работать. Например, если установлен флаг Qt::ImhNumbersOnly, метод ввода может изменить свои визуальные компоненты, чтобы отразить, что можно вводить только цифры.
Эффект может различаться между реализациями методов ввода.
Эта функция была добавлена в Qt 4.6.
См. также setInputMethodHints() и inputMethodQuery().
[virtual protected] QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
Этот метод имеет значение только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента, чтобы можно было поддерживать сложные операции методов ввода, такие как поддержка окружающего текста и преобразований.
См. также 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() в вашей реализации.
Событие игнорируется (QEvent::ignore()) для элементов, которые не являются ни перемещаемыми, ни выделяемыми.
См. также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Этот обработчик событий, для события event, может быть переопределён для получения событий отпускания мыши для этого элемента.
Вызов QEvent::ignore() или QEvent::accept() для event не имеет эффекта.
Стандартная реализация обрабатывает базовое взаимодействие с элементами, такое как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите QGraphicsItem::mouseReleaseEvent() в вашей реализации.
Обратите внимание, что mousePressEvent() определяет, какой графический элемент получает события мыши. Подробности см. в описании mousePressEvent().
См. также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().
void QGraphicsItem::moveBy(qreal dx, qreal dy)
Перемещает элемент на dx точек по горизонтали и dy точек по вертикали. Эта функция эквивалентна вызову setPos(pos() + QPointF(dx, dy)).
qreal QGraphicsItem::opacity() const
Возвращает локальную непрозрачность этого элемента, которая находится в диапазоне от 0,0 (прозрачный) до 1,0 (непрозрачный). Это значение комбинируется с родительскими и предковыми значениями в effectiveOpacity(). Эффективная непрозрачность определяет, как отображается элемент, а также влияет на его видимость при запросе такими функциями, как QGraphicsView::items().
Свойство opacity определяет состояние кисти, переданной функции paint(). Если элемент кэшируется, т.е. ItemCoordinateCache или DeviceCoordinateCache, эффективное свойство будет применено к кэшу элемента при его отрисовке.
Значение непрозрачности по умолчанию равно 1,0; полностью непрозрачный.
Эта функция была добавлена в Qt 4.5.
См. также setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
[virtual] QPainterPath QGraphicsItem::opaqueArea() const
Эта виртуальная функция возвращает фигуру, представляющую область, где этот элемент непрозрачен. Область непрозрачна, если она заполнена непрозрачной кистью или цветом (т. е. не прозрачна).
Эта функция используется функцией isObscuredBy(), которая вызывается базовыми элементами для определения, скрывается ли этот элемент другим элементом.
Стандартная реализация возвращает пустую QPainterPath, указывая, что этот элемент полностью прозрачен и не скрывает другие элементы.
См. также isObscuredBy(), isObscured() и shape().
[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = ...)
Эта функция, которая обычно вызывается QGraphicsView, рисует содержимое элемента в локальных координатах.
Переопределите эту функцию в подклассе QGraphicsItem, чтобы обеспечить реализацию рисования элемента, используя painter. Параметр option предоставляет параметры стиля для элемента, такие как его состояние, видимая область и подсказки уровня детализации. Аргумент widget необязателен. Если он предоставлен, он указывает на виджет, на котором рисуется; в противном случае он равен 0. При кэшировании рисования widget всегда равен 0.
void RoundRectItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
} Кисть художника по умолчанию имеет ширину 0, а ее кисть инициализируется кистью QPalette::Text из палитры устройства рисования. Кисть инициализируется кистью QPalette::Window.
Убедитесь, что все рисование ограничено границами boundingRect(), чтобы избежать артефактов (так как QGraphicsView не обрезает для вас кисть художника). В частности, когда QPainter рисует контур фигуры с помощью заданной QPen, половина контура будет нарисована снаружи, а половина внутри фигуры, которую вы рисуете (например, при ширине пера 2 единицы, вы должны нарисовать контуры на 1 единицу внутри boundingRect()). QGraphicsItem не поддерживает использование декоративных перьев с ненулевой шириной.
Все рисование выполняется в локальных координатах.
Примечание: Элемент всегда должен перерисовывать себя точно так же, если только не был вызван update(), в противном случае могут возникнуть визуальные артефакты. Другими словами, два последовательных вызова paint() должны всегда генерировать одинаковый результат, если между ними не был вызван update().
Примечание: Включение кэширования для элемента не гарантирует, что paint() будет вызываться только один раз фреймворком Graphics View, даже без явного вызова update(). Подробнее см. документацию setCacheMode().
См. также setCacheMode(), QPen::width(), Координаты элементов и ItemUsesExtendedStyleOption.
QGraphicsItem *QGraphicsItem::panel() const
Возвращает панель элемента или nullptr, если у этого элемента нет панели. Если элемент является панелью, он вернет себя. В противном случае он вернёт ближайшего предка, являющегося панелью.
Эта функция была добавлена в Qt 4.6.
См. также isPanel() и ItemIsPanel.
QGraphicsItem::PanelModality QGraphicsItem::panelModality() const
Возвращает модальность для данного элемента.
Эта функция была добавлена в Qt 4.6.
См. также setPanelModality().
QGraphicsItem *QGraphicsItem::parentItem() const
Возвращает указатель на родительский элемент этого элемента. Если у этого элемента нет родителя, возвращается nullptr.
См. также setParentItem() и childItems().
QGraphicsObject *QGraphicsItem::parentObject() const
Возвращает указатель на родительский элемент, приведенный к типу QGraphicsObject. Возвращает nullptr, если родительский элемент не является объектом QGraphicsObject.
Функция была добавлена в Qt 4.6.
См. также parentItem() и childItems().
QGraphicsWidget *QGraphicsItem::parentWidget() const
Возвращает указатель на родительский виджет элемента. Родительским виджетом элемента является ближайший родительский элемент, который является виджетом.
Функция была добавлена в Qt 4.4.
См. также parentItem() и childItems().
QPointF QGraphicsItem::pos() const
Возвращает положение элемента в координатах родителя. Если у элемента нет родителя, его положение задаётся в координатах сцены.
Положение элемента описывает его начало (локальная координата (0, 0)) в координатах родителя; эта функция возвращает то же, что и mapToParent(0, 0).
Для удобства можно также вызвать scenePos(), чтобы определить положение элемента в координатах сцены, независимо от его родителя.
См. также x(), y(), setPos(), transform(), и Систему координат виджета отображения графических элементов.
[protected] void QGraphicsItem::prepareGeometryChange()
Подготавливает элемент к изменению геометрии. Вызывайте эту функцию перед изменением области ограничивающей прямоугольника элемента, чтобы сохранить индекс QGraphicsScene актуальным.
prepareGeometryChange() вызовет update(), если это необходимо.
Пример:
void CircleItem::setRadius(qreal newRadius)
{
if (radius != newRadius) {
prepareGeometryChange();
radius = newRadius;
}
} См. также boundingRect().
void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)
Удаляет фильтр событий этого элемента из filterItem.
См. также installSceneEventFilter().
void QGraphicsItem::resetTransform()
Сбрасывает матрицу преобразования этого элемента до единичной матрицы или все свойства преобразования до их значений по умолчанию. Это эквивалентно вызову setTransform(QTransform()).
Функция была добавлена в Qt 4.3.
См. также setTransform() и transform().
qreal QGraphicsItem::rotation() const
Возвращает поворот по часовой стрелке в градусах вокруг оси Z. Значение по умолчанию равно 0 (т.е. элемент не повернут).
Поворот комбинируется с масштабированием элемента scale(), transform() и transformations() для отображения системы координат элемента в системе координат родительского элемента.
Функция была добавлена в Qt 4.6.
См. также setRotation(), transformOriginPoint(), и Преобразования.
qreal QGraphicsItem::scale() const
Возвращает коэффициент масштабирования элемента. Значение коэффициента масштабирования по умолчанию равно 1.0 (т.е. элемент не масштабируется).
Масштабирование комбинируется с вращением элемента rotation(), transform() и transformations() для отображения системы координат элемента в системе координат родительского элемента.
Функция была добавлена в Qt 4.6.
См. также setScale(), rotation() и Преобразования.
QGraphicsScene *QGraphicsItem::scene() const
Возвращает текущую сцену для элемента или nullptr, если элемент не хранится в сцене.
Чтобы добавить или переместить элемент в сцену, вызовите QGraphicsScene::addItem().
QRectF QGraphicsItem::sceneBoundingRect() const
Возвращает ограничивающий прямоугольник этого элемента в координатах сцены, комбинируя sceneTransform() с boundingRect().
См. также boundingRect() и Систему координат виджета отображения графических элементов.
[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)
Этот виртуальный метод получает события для этого элемента. Переопределите этот метод, чтобы перехватить события перед их отправкой специализированным обработчикам событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().
Возвращает true, если событие было распознано и обработано; в противном случае (например, если тип события не был распознан) возвращается false.
event — перехваченное событие.
[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
Фильтры событий для элемента watched. event — отфильтрованное событие.
Переопределение этого метода в подклассе позволяет элементу использоваться в качестве фильтра событий для других элементов, перехватывая все события, отправленные этим элементам, прежде чем они смогут ответить.
Переопределения должны возвращать true, чтобы предотвратить дальнейшую обработку данного события, гарантируя, что оно не будет передано наблюдаемому элементу, или возвращать false, чтобы указать, что событие должно быть распространено дальше системой событий.
См. также installSceneEventFilter().
QPointF QGraphicsItem::scenePos() const
Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).
См. также pos(), sceneTransform(), и Систему координат виджета отображения графических элементов.
QTransform QGraphicsItem::sceneTransform() const
Возвращает матрицу преобразования сцены этого элемента. Эта матрица может использоваться для отображения координат и геометрических фигур из локальной системы координат этого элемента в систему координат сцены. Чтобы отобразить координаты из сцены, необходимо сначала инвертировать возвращённую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // returns QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // returns QPointF(0, 0);
В отличие от transform(), которая возвращает только локальное преобразование элемента, эта функция включает положение элемента (и всех родителей) и все свойства преобразования.
Функция была добавлена в Qt 4.3.
См. также transform(), setTransform(), scenePos(), Систему координат виджета отображения графических элементов и Преобразования.
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
Прокручивает содержимое rect на dx, dy. Если rect — пустой прямоугольник (значение по умолчанию), прокручивается ограничивающий прямоугольник элемента.
Прокрутка предоставляет быструю альтернативу простому перерисовке, когда содержимое элемента (или части элемента) сдвигается вертикально или горизонтально. В зависимости от текущего преобразования и возможностей устройства рисования (т.е. области просмотра) эта операция может состоять из простого перемещения пикселей из одного места в другое с помощью memmove(). В большинстве случаев это быстрее, чем перерисовка всей области.
После прокрутки элемент выведет обновление для новых открытых областей. Если прокрутка не поддерживается (например, вы рисуете в области просмотра OpenGL, которая не использует оптимизации прокрутки), эта функция эквивалентна вызову update(rect).
Примечание: Прокрутка поддерживается только при включённом QGraphicsItem::ItemCoordinateCache; во всех других случаях вызов этой функции эквивалентен вызову update(rect). Если вы уверены, что элемент непрозрачный и не перекрывается другими элементами, вы можете отобразить rect в координатах области просмотра и прокрутить область просмотра.
QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect);
Функция была добавлена в Qt 4.4.
См. также boundingRect().
void QGraphicsItem::setAcceptDrops(bool on)
Если on имеет значение true, этот элемент будет принимать события перетаскивания и опускания; в противном случае он будет прозрачным для таких событий. По умолчанию элементы не принимают события перетаскивания и опускания.
См. также acceptDrops().
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события наведения курсора; в противном случае он будет игнорировать их. По умолчанию элементы не принимают события наведения курсора.
События наведения курсора доставляются, когда нет элемента, который в данный момент является получателем событий мыши. Они отправляются, когда курсор мыши входит в элемент, перемещается внутри него и выходит из элемента. События наведения курсора обычно используются для выделения элемента при входе курсора и для отслеживания курсора мыши при наведении на элемент (эквивалент QWidget::mouseTracking).
Родительские элементы получают события входа наведения курсора перед своими дочерними элементами, а события выхода — после. Однако родительский элемент не получает события выхода наведения курсора, если курсор входит в дочерний элемент; родительский элемент остаётся «под наведением» до тех пор, пока курсор не покинет его область, включая области его дочерних элементов.
Если родительский элемент обрабатывает события дочерних элементов, он будет получать события перемещения курсора при наведении, перемещения при перетаскивании и опускания, поскольку курсор проходит через его дочерние элементы, но он не получает события входа наведения курсора и выхода наведения курсора, а также события входа перетаскивания и выхода перетаскивания от имени своих дочерних элементов.
QGraphicsWidget с декорациями окна будет принимать события наведения курсора независимо от значения acceptHoverEvents().
Функция была добавлена в Qt 4.4.
См. также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
Если enabled имеет значение true, этот элемент будет принимать события касания; в противном случае он будет игнорировать их. По умолчанию элементы не принимают события касания.
Функция была добавлена в Qt 4.6.
См. также acceptTouchEvents().
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
Устанавливает кнопки мыши buttons, для которых этот элемент принимает события мыши.
По умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он станет элементом захвата мыши, когда для этой кнопки будет доставлено событие нажатия мыши. Однако, если элемент не принимает кнопку мыши, QGraphicsScene перенаправит события мыши первому элементу под ним, который это сделает.
Чтобы отключить события мыши для элемента (т.е. сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
См. также acceptedMouseButtons() и mousePressEvent().
void QGraphicsItem::setActive(bool active)
Если active имеет значение true, и сцена активна, панель этого элемента будет активирована. В противном случае панель деактивируется.
Если элемент не является частью активной сцены, active определит, что произойдёт с панелью, когда сцена станет активной или элемент будет добавлен в сцену. Если имеет значение true, панель элемента будет активирована, когда элемент будет добавлен в сцену или сцена будет активирована. В противном случае элемент останется неактивным независимо от состояния активации сцены.
Функция была добавлена в Qt 4.6.
См. также isPanel(), QGraphicsScene::setActivePanel() и QGraphicsScene::isActive().
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
Устанавливает точность области ограничивающей области до granularity; значение от 0 до 1 включительно. Значение по умолчанию равно 0 (т.е. наименьшая точность, где ограничивающая область соответствует прямоугольнику ограничивающей области элемента).
Точность используется функцией boundingRegion() для расчёта того, насколько подробной должна быть ограничивающая область элемента. Максимально достижимая точность — 1, где boundingRegion() вернёт наилучший контур, возможный для устройства (например, для QGraphicsView 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(), Система координат виджета Graphics View и Преобразования.
void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)
Устанавливает точку origin начала преобразования в координатах элемента.
Функция была введена в Qt 4.6.
См. также transformOriginPoint() и Преобразования.
void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)
Это перегруженная функция.
Устанавливает точку начала преобразования в координатах элемента. Это эквивалентно вызову setTransformOriginPoint(QPointF(x, y)).
Функция была введена в Qt 4.6.
См. также setTransformOriginPoint() и Преобразования.
void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)
Устанавливает список графических 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.
Связанные нечленные функции
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.14/qgraphicsitem.html