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