Описание класса QGraphicsItemКласс QGraphicsItem является базовым классом для всех графических элементов в QGraphicsScene. Далее... #include <QGraphicsItem> От него наследуются: QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject и QGraphicsPixmapItem. Класс был добавлен в Qt 4.2. Открытые типы
Открытые функции
Статические открытые члены
Защищенные функции
Связанные нечлены класса
Подробное описаниеКласс QGraphicsItem является базовым классом для всех графических элементов в QGraphicsScene. Он предоставляет удобную основу для написания своих собственных элементов. Она включает определение геометрии элемента, обнаружение столкновений, реализацию его отрисовки и взаимодействие элементов с помощью указателей. QGraphicsItem является частью каркаса графического представления Для удобства Qt предоставляет набор стандартных графических элементов наиболее общих фигур. Ими являются:
Вся геометрическая информация элементов находится в его локальной координатной системе. Позиция элемента 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 обновить свои данные. Определение столкновений может быть выполнено двумя способами:
Функция contains() используется для определения содержит ли элемент указанную точку или нет. Эта функция также может быть переопределена для элемента. Поведение функции contains() по умолчанию основано на вызывании shape(). Элемент может содержать другие элементы и находиться внутри других элементов. Все элементы могут иметь родительских элемент и список потомков. Если у элемента есть родитель, то его позиция указывается в координатах родителя (т.е. в локальной системе координат родителя). Родительские элементы сообщают своё расположение и преобразование всем потомкам. ПреобразованияQGraphicsItem поддерживает проективные преобразования относительно его базового расположения pos(). Имеется несколько способов изменить преобразование элемента. Для простых преобразований вы можете вызвать либо вспомогательные функции setRotation() или setScale(), либо вы можете передать любую матрицу преобразований в setTransform(). Для улучшенного контроля за преобразованием вы также можете включить опцию настроек нескольких скомбинированных преобразований вызывая setTransformations(). Преобразование элемента накапливается от родителя к потомку, так что если и родитель и потомок повёрнуты на 90 градусов, суммарное преобразование потомка будет 180 градусов. Аналогично, если элемент-родитель увеличивается в два раза по сравнению с оригинальным размером, его потомки также станут в два раза больше. Преобразование элемента не влияет на его собственную локальную геометрию; все геометрические функции (например, contains(), update() и все функции преобразований) будут работать в локальных координатах. Для удобства QGraphicsItem предоставляет функции sceneTransform(), которая возвращает суммарную матрицу преобразований элемента (включая его позицию и позиции и преобразования всех родителей) и scenePos(), которая возвращает его позицию в координатах сцены. Для сброса матрицы элемента, вызовите функцию resetTransform(). Некоторые операции преобразования производят различный результат в зависимости от порядка, в котором они применяются. Например, если вы масштабируете результат преобразования, а затем вращаете его, то вы можете получить результаты, отличные от тех когда результат преобразования сначала вращается. Тем не менее, порядок, в котором вы установили свойства преобразования QGraphicsItem не будут влиять на результирующее преобразование; QGraphicsItem всегда применяет свойства в фиксированном, определенном порядке:
РисованиеФункция paint() вызывается QGraphicsView для отрисовки содержимого элемента. Элемент не имеет фона или заливки по умолчанию сам по себе; все что находится за элементом будет видно через все области, которые явно не закрашиваются в данной функции. Вы можете вызвать update() чтобы запросить перерисовку, дополнительно можно передать прямоугольник который должен быть перерисован. В зависимости от того, является ли элемент видимым или нет, элемент будет или не будет перерисован; в QGraphicsItem нет аналога QWidget::repaint(). Элементы отрисовываются видом, начиная с родительских элементов, а затем дочерних в порядке возрастания расположения. Вы можете установить порядок расположения элемента вызвав setZValue(), и проверить его вызвав zValue(); элементы с более низкими значениями высоты отрисовываются раньше элементов с более высоким значениями. Порядок расположения применяется к родственным элементам; родители всегда отрисовываются раньше своих потомков. СортировкаВсе элементы отрисовываются в определённом, неизменном порядке, и этот же порядок определяет, какие элементы будут первыми получать ввод мыши когда вы щелкните по сцене. Обычно вам не нужно беспокоиться о сортировке, так как элементы следуют "естественному порядку", вытекающему из логической структуры сцены. Дочерние элементы располагаются над родительским элементом, а соседние элементы располагаются в порядке вставки (т.е. в том же порядке, в каком они были либо добавлены в сцену, либо добавлены в одного и того же родителя). Если вы добавляете элемент A, и затем B, тогда B будет сверху A. Если вы затем добавляете C, то порядок элементов станет: A, затем B, затем C. Этот пример показывает порядок расположения всех конечностей робота из примера Drag and Drop Robot. Торс - корневой элемент (все остальные элементы являются дочерними элементами или потомками торса), поэтому он отрисовывается первым. Следующей отрисовывается голова, так как она это первый элемент в списке дочерних элементов торса. Затем отрисовывается верхняя левая рука. Поскольку нижняя рука является дочерним элементом по отношению верхней руки, то далее отрисовывается нижняя рука, следом за соседом верхней руки, которым является верхняя правая рука, и так далее. Для продвинутых пользователей имеются способы изменить сортировку ваших элементов:
Порядок размещения двух соседних элементов также имеет значение для каждого дочернего элемента и элементов-потомков данного элемента. Поэтому если один элемент находится над другим, тогда все его дочерние элементы также будут располагаться над всеми остальными дочерними элементами. СобытияQGraphicsItem получает события от QGraphicsScene с помощью виртуальной функции sceneEvent(). Эта функция распределяет события для большинства обычных сообщений по набору вспомогательных обработчиков событий:
Вы можете фильтровать события для любого другого элемента с помощью установки фильтров событий. Эта функциональность отделена от обычных фильтров событий Qt (смотрите QObject::installEventFilter()), которые работают только на подклассах QObject. После установки вашего элемента в качестве фильтра событий для другого элемента с помощью вызова installSceneEventFilter(), фильтрованные события будут получаться виртуальной функцией sceneEventFilter(). Вы можете удалить фильтр событий элемента вызвав функцию removeSceneEventFilter(). Пользовательские данныеИногда полезно связывать собственные данные с элементом, будь он пользовательским или стандартным. Вы можете вызвать setData() для любого элемента чтобы сохранить в нём данные с использованием пары ключ-значение (ключ является целым числом, а значение - QVariant). Чтобы получить собственные данные из элемента вызовите функцию data(). Эта функциональность не используется Qt; она предоставляется для удобства пользователя. Смотрите также QGraphicsScene, QGraphicsView и Каркас графического представления. Описание типов-членовenum QGraphicsItem::CacheModeЭто перечисление описывает режимы кэширования QGraphicsItem. Кэширование используется для ускорения отрисовки с помощью выделения и отрисовки невидимого буфера, который будет использован когда элементу потребуется перерисовка. Для некоторых устройств рисования кэш храниться прямо в графической памяти, что делает отрисовку очень быстрой.
Данное перечисление было введено или модифицировано в Qt 4.4. Смотрите также QGraphicsItem::setCacheMode(). enum QGraphicsItem::GraphicsItemChangeЭтот перечисление описывает изменения состояний о который сообщается с помощью QGraphicsItem::itemChange(). Уведомления посылаются при смене состояний и, в некоторых случаях, могут быть сделаны коррекции (за подробностями обращайтесь к документации для каждого изменения). Замечание: Будьте осторожны с вызовом функций над самимQGraphicsItem внутри itemChange(), так как некоторые вызовы функций могут привести к нежелательной рекурсии. Например, вы не можете вызыватьsetPos() в itemChange() на уведомление ItemPositionChange, так как функция setPos() снова вызовет itemChange(ItemPositionChange). Вместо этого вы можете вернуть новую, скорректированную позицию из itemChange().
enum QGraphicsItem::GraphicsItemFlag
|
Константа | Значение | Описание |
---|---|---|
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. |
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. |
Тип GraphicsItemFlags является определением типа для QFlags<GraphicsItemFlag>. Он хранит комбинацию значений (по ИЛИ) для GraphicsItemFlag.
Данное перечисление определяет поведение модальной панели. Модальная панель - это панель, которая блокирует ввод в других панелях. Обратите внимание на то, что элементы, которые являются потомками модальной панели, блокируются.
Значения:
Константа | Значение | Описание |
---|---|---|
QGraphicsItem::NonModal | 0 | Панель не является модальной и не блокирует ввод информации на других панелях. Это значение по умолчанию для панелей. |
QGraphicsItem::PanelModal | 1 | Панель является модальной для иерархии отдельного элемента и блокирует ввод информации в родительской панели, все выше стоящие панели и все соседи его родителя и выше стоящих панелей. |
QGraphicsItem::SceneModal | 2 | Окно является модальным для всей сцены и блокирует ввод информации во всех панелях. |
Данное перечисление было введено или модифицировано в Qt 4.6.
Смотрите также QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality() и QGraphicsItem::ItemIsPanel.
Создаёт a QGraphicsItem с заданным родительским элементом parent. Он не модифицирует объект родителя, возвращаемый QObject::parent().
Если parent равен 0, вы можете добавить элемент на сцену вызвав QGraphicsScene::addItem(). Элемент станет элементом верхнего уровня.
Смотрите также QGraphicsScene::addItem() и setParentItem().
Уничтожает QGraphicsItem и всех его потомков. Если этот элемент связан со сценой, то он будет убран с неё перед удалением.
Замечание: Это более эффективно для удаления элемента из QGraphicsScene перед разрушением элемента.
Возвращает true если этот элемент может принимать события перетаскивания; в противном случает возвращает false. По умолчанию элементы не принимают события перетаскивания; элементы являются для него "прозрачными".
Смотрите также setAcceptDrops().
Возвращает true если элемент возвращает события перемещения над ним курсора мыши (QGraphicsSceneHoverEvent); в противном случае возвращает false. По умолчанию элементы не принимают данные события.
Эта функция была введена в Qt 4.4.
Смотрите также setAcceptHoverEvents() и setAcceptedMouseButtons().
Возвращает true, если элемент принимает сенсорные события; в противном случае возвращает false. По умолчанию элементы не принимают сенсорные события.
Эта функция была введена в Qt 4.6.
Смотрите также setAcceptTouchEvents().
Возвращает кнопки мыши от которых данный элемент принимает события. По умолчанию принимаются все кнопки мыши.
Если элемент принимает кнопку мыши, то он получает все события нажатия для данной кнопки. Если элемент не принимает кнопку, то QGraphicsScene передаст событие мыши первому элементу под ним, который его примет.
Смотрите также setAcceptedMouseButtons() и mousePressEvent().
Эта виртуальная функция вызывается дважды для всех элементов из слота QGraphicsScene::advance() slot. В первой фазе все элементы вызываются с фазой phase == 0, показывающей что элемент на сцене начал отрисовываться, а затем все элементы вызываются с фазой phase == 1. Переопределите эту функцию для обновления элемента если вам нужна простая анимация, контролируемая сценой.
Реализация по умолчанию ничего не делает.
Альтернативой данной функции для индивидуальной анимации является или использование QGraphicsItemAnimation или множественное наследование от QObject и QGraphicsItem и анимация элемента с помощью QObject::startTimer() и QObject::timerEvent().
Смотрите также QGraphicsItemAnimation и QTimeLine.
Эта чисто виртуальная функция определяет внешние границы элемента в виде прямоугольника; всё рисование должно быть ограничено внутри этого прямоугольника. 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().
Возвращает область, ограничивающую элемент. Пространство координат возвращаемой области зависит от itemToDeviceTransform. Если в качестве параметра вы передадите ссылку на QTransform, то эта функция вернёт область в локальных координатах.
Ограничивающая область описывает грубый контур видимого содержимого элемента. Хотя её вычисление затратно, но она более точна чем boundingRect() и может помочь избежать ненужную отрисовку при обновлении элемента. Это очень эффективно для тонких элементов (т.е. линий или простых полигонов). Вы можете настроить точность ограничивающей области вызвав setBoundingRegionGranularity(). По умолчанию точность равна 0; в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику.
itemToDeviceTransform является преобразованием из координат элемента в координаты устройства. Если вы хотите чтобы эта функция возвращала QRegion в координатах сцены, вы можете передать в качестве аргумента sceneTransform().
Эта функция была введена в Qt 4.4.
Смотрите также boundingRegionGranularity().
Возвращает точность ограничивающей области элемента; значение может изменяться от 0 до 1. Значение по умолчанию равно 0 (т.е. наименьшая точность, в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику).
Эта функция была введена в Qt 4.4.
Смотрите также setBoundingRegionGranularity().
Возвращает режим кэширования элемента. По умолчанию используется режим NoCache (т.е. кэширование отключено и отрисовка происходит незамедлительно).
Эта функция была введена в Qt 4.4.
Смотрите также setCacheMode().
Возвращает список потомков элемента.
Элементы отсортированы в порядке расположения. Во внимание принимается и порядок добавления элементов, и их Z-координаты.
Эта функция была введена в Qt 4.4.
Смотрите также setParentItem(), zValue() и Сортировка.
Возвращает ограничивающий прямоугольник всех потомков элемента (т.е. его детей, детей его детей и т.д.) в локальных координатах. Прямоугольник будет содержать всех потомок после того как они будут переведены в локальные координаты. Если у элемента нет потомков, эта функция вернёт пустой QRectF.
Эта функция не учитывает ограничивающий прямоугольник самого элемента; она возвращает суммарный ограничивающий прямоугольник только его потомков. Если вам надо включить ограничивающий прямоугольник элемента, вы можете добавить boundingRect() к childrenBoundingRect() с помощью оператора QRectF::operator|().
Сложность этой функции увеличивается линейно; она определяет размер ограничивающего прямоугольника перебирая всех потомков.
Смотрите также boundingRect() и sceneBoundingRect().
Убирает фокус ввода клавиатуры от элемента.
Если он имеет фокус, то отправляется событие потери фокуса этому элементу чтобы сообщить ему, что он потерял фокус.
Только элементы которые установили флаг ItemIsFocusable или виждеты, установившие подходящую стратегию фокуса, могут получать фокус клавиатуры.
Смотрите также setFocus(), hasFocus() и QGraphicsWidget::focusPolicy.
Возвращает область отсечения данного элемента или пустую область отсечения QPainterPath, если этот элемент не отсекается. Область отсечения ограничивает внешний вид элемента и взаимодействия (т.е. ограничивает область, отрисовываемую элементом, и это также ограничивает область, из которой элемент получает события).
Вы можете включить отсечение установив флаги ItemClipsToShape или ItemClipsChildrenToShape. Область отсечения элемента вычисляется пересекая все отсечения контуров предков. Если элемент установил ItemClipsToShape, результирующее отсечение частично совпадает с контуром элемента.
Замечание: Отсечение приводит к потерям производительности для всех связанных элементов; вы должны в большинстве случаев избегать, если это возможно, использования отсечения (например, если ваши элементы всегда отрисовываются внутри границ boundingRect() или shape(), отсечение не нужно).
Эта функция была введена в Qt 4.5.
Смотрите также isClipped(), shape() и setFlags().
Возвращает true, если этот элемент столкнулся с другим элементом other; в противном случае возвращает false.
Режим mode применяется к элементу other, а результирующий контур или ограничивающий прямоугольник затем сравнивается с контуром данного элемента. Значение по умолчанию для mode равно Qt::IntersectsItemShape; other сталкивается с другим элементом, если он либо пересекается, либо включает в себя, либо включён сам в контур этого элемента (за подробностями обращайтесь к Qt::ItemSelectionMode).
Реализация по умолчанию основана на пересечении фигур и она вызывает shape() для обоих элементов. Поскольку сложность произвольного пересечения фигуры с фигурой увеличивается на порядок когда фигуры сложные, эта операция может быть заметно занимающей время. У вас есть возможность переопределить эту функцию в подклассе QGraphicsItem чтобы предоставить собственный алгоритм. Это позволит вам использовать ограничения природы фигур ваших элементов чтобы улучшить производительность обнаружения столкновений. Например, столкновение двух непреобразованных идеально круглых элементов может быть очень эффективно определено сравнением их позиций и радиусов.
При переопределении этой функции и вызове shape() или boundingRect() элемента other не забывайте преобразовывать возвращаемые координаты в систему координат этого элемента прежде определения пересечения.
Смотрите также contains() и shape().
Возвращает true если элемент пересекается с путём path.
Тип столкновения определяется режимом mode. По умолчанию значением режима mode равно Qt::IntersectsItemShape; путь path сталкивается с элементом если он пересекается с ним, содержит его или содержится в его фигуре.
Обратите внимание на то, что эта функция проверяет - содержится ли контур элемента или ограничивающий прямоугольник (в зависимости от mode) внутри области path, и не заключена ли область path внутри контура элемента или ограничивающего прямоугольника элемента.
Смотрите также collidesWithItem(), contains() и shape().
Возвращает список элементов, которые сталкиваются с этим элементом.
Путь обнаруженных столкновений определяется, применяя mode к элементам, которые сравниваются с данным элементом, т.е. контур каждого элемента или ограничивающего прямоугольника проверен вместе с контуром данного элемента. Значение mode по умолчанию равно Qt::IntersectsItemShape.
Смотрите также collidesWithItem().
Возвращает ближайшего общего предка этого элемента и элемента other или 0 если или other равен 0, или у них нет общего предка.
Эта функция была введена в Qt 4.4.
Смотрите также isAncestorOf().
Возвращает true если этот элемент содержит точку point, заданную в локальных координатах; в противном случае возвращает false. Чаще всего эта функция вызывается QGraphicsView для определения находится ли элемент под курсором и поэтому реализация данной функции должна быть настолько быстрой, насколько это возможно.
По умолчанию эта функция вызывает shape(), но вы можете переопределить её в подклассе для предоставления (возможно более эффективной) реализации.
Смотрите также shape(), boundingRect() и collidesWithPath().
Этот обработчик события может быть переопределён в подклассе для обработки событий контекстного меню. Параметр 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().
Возвращает форму текущего курсора элемента. Курсор мыши будет принимать эту форму когда будет находится над этим элементом. Смотрите список предопределённых объектов курсора для диапазона полезных форм.
Для элемента-редактор можно использовать курсор в виде прямой линии:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, будет использован курсор элемента, находящегося ниже.
Смотрите также setCursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
Возвращает пользовательские данные элемента для указанного ключа 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().
Возвращает матрицу преобразования устройства этого элемента, используя viewportTransform для перевода из координат сцены в координаты устройства. Эта матрица может быть использована для перевода координат и геометрических фигур из локальной координатной системы этого элемента в систему координат области отображения (или любого другого устройства). Для перевода координат области отображения сначала необходимо инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // возвращает точку элемента (0, 0) в координатах области отображения вида rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // возвращает точку с координатами (100, 100) области просмотра вида в координатах элемента
Эта функция аналогична комбинации преобразования сцены элемента с преобразованием области отображения вида, но также понимает флаг ItemIgnoresTransformations. Преобразование устройства может быть использовано для точного преобразования координат (и определения столкновений) для непреобразуемых элементов.
Эта функция была введена в Qt 4.3.
Смотрите также transform(), setTransform(), scenePos(), Система координат графического представления и itemTransform().
Этот обработчик события event может быть переопределён чтобы получать события начала перетаскивания для этого элемента. События начала перетаскивания генерируются как только курсор входит в область элемента.
Принимая это событие ( т.е. вызвав QEvent::accept()), элемент также примет событие отпускания в дополнение к событиям перетаскивания и окончания перетаскивания. В противном случае событие игнорируется и передаётся следующему элементу. Если событие принимается, элемент получит событие перетаскивания прежде чем управление вернётся в цикл обработки событий.
Общая реализация dragEnterEvent принимает или игнорирует событие event в зависимости от связанного с событием event типа данных. Пример:
CustomItem::CustomItem() { setAcceptDrops(true); ... } void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { event->setAccepted(event->mimeData()->hasFormat("text/plain")); }
По умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по умолчанию ничего не делает.
Смотрите также dropEvent(), dragMoveEvent() и dragLeaveEvent().
Этот обработчик события event может быть переопределён чтобы получать события окончания перетаскивания для этого элемента. События окончания перетаскивания генерируются как только курсор выходит за область элемента. В большинстве случаев вам не надо переопределять эту функцию, но она может быть полезна для восстановления состояния вашего элемента (например, выделение).
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
По умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по умолчанию ничего не делает.
Смотрите также dragEnterEvent(), dropEvent() и dragMoveEvent().
Этот обработчик события event может быть переопределён чтобы получать события перетаскивания для этого элемента. События перетаскивания генерируются если курсор перемещается внутри области элемента. В большинстве случаев вам не надо переопределять эту функцию; она используется для указания того, что только некоторые части вашего элемента могут принимать события бросания.
Вызов QEvent::ignore() или QEvent::accept() для события event показывает может элемент принимать событие бросание это этого события или нет. По умолчанию событие event принимается, показывая что элемент разрешает событие бросания на указанной позиции.
По умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по умолчанию ничего не делает.
Смотрите также dropEvent(), dragEnterEvent() и dragLeaveEvent().
Этот обработчик события event может быть переопределён чтобы получать события бросания для этого элемента. Элементы могут получать события бросания только в том случае, если событие перетаскивания было принято.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
По умолчанию элементы не получают события перемещения и бросания; чтобы включить эту особенность вызовите setAcceptDrops(true).
Реализация по умолчанию ничего не делает.
Смотрите также dragEnterEvent(), dragMoveEvent() и dragLeaveEvent().
Возвращает фактическую прозрачность данного элемента, которая находится между 0.0 (прозрачный) и 1.0 (непрозрачный). Данное значение является сочетанием локальной прозрачности данного элемента и прозрачностью его родителя и предков. Фактическая прозрачность предопределяет, как визуализируется элемент.
Эта функция была введена в Qt 4.5.
Смотрите также opacity(), setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
Если этот элемент является частью сцены которая просматривается QGraphicsView, эта вспомогательная функция будет пытаться прокрутить вид чтобы обеспечить видимость прямоугольника rect в области просмотра вида. Если прямоугольник rect является пустым (по умолчанию), QGraphicsItem будет использовать ограничивающий прямоугольник элемента. xmargin и ymargin это число пикселов, которые вид должен использовать для отступов.
Если указанный прямоугольник не может быть достигнут, содержимое прокручивается до ближайшего годного положения.
Если этот элемент не просматривается QGraphicsView, то эта функция ничего не делает.
Смотрите также QGraphicsView::ensureVisible().
Эта вспомогательная функция эквивалента вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin):
Возвращает true, если этот элемент фильтрует дочерние события (т.е. все события, предназначенные для любых из его потомков, вместо этого направляются в этот элемент); в противном случае возвращается false.
Значение по умолчанию равно false; дочерние события не фильтруются.
Эта функция была введена в Qt 4.6.
Смотрите также setFiltersChildEvents().
Возвращает флаги элемента. Флаги описывают какие настраиваемые особенности элемента включены, а какие - нет. Например, если флаги включают ItemIsFocusable, элемент может получать фокус ввода.
По умолчанию все флаги отключены.
Смотрите также setFlags() и setFlag().
Этот обработчик события event может быть переопределён чтобы получать события получения фокуса для этого элемента. Реализация по умолчанию вызывает ensureVisible().
Смотрите также focusOutEvent(), sceneEvent() и setFocus().
Если этот элемент, потомок или отдалённый потомок данного элемента в настоящее время имеет фокус ввода, то эта функция возвратит указатель на этот элемент. Если потомки не имеют фокуса ввода, возвращается 0.
Эта функция была введена в Qt 4.6.
Смотрите также hasFocus(), setFocus() и QWidget::focusWidget().
Этот обработчик события event может быть переопределён чтобы получать события потери фокуса для этого элемента. Реализация по умолчанию ничего не делает.
Смотрите также focusInEvent(), sceneEvent() и setFocus().
Возвращает прокси фокуса (focus proxy) данного элемента или 0, если у данного элемента нет прокси фокуса.
Эта функция была введена в Qt 4.6.
Смотрите также setFocusProxy(), setFocus() и hasFocus().
Получает ввод клавиатуры.
Элемент будет получать весь ввод клавиатуры от сцены до тех пор пока не произойдёт одно из следующих событий:
Когда элемент получает ввод клавиатуры, он получает событие QEvent::GrabKeyboard. Когда он теряет ввод клавиатуры, он получает событие QEvent::UngrabKeyboard. Эти события могут быть использованы для определения когда элемент получает или теряет ввод клавиатуры с помощью других способов кроме получения фокуса ввода.
Почти никогда не надо явно получать ввод клавиатуры в Qt, так как Qt получает и освобождает его разумно. В частности, Qt получает ввод клавиатуры когда ваш элемент получает фокус ввода и освобождает его когда элемент теряет фокус ввода или когда элемент невидим.
Заметьте, что только видимые элементы могут получить ввод клавиатуры. Вызов grabKeyboard() для невидимых элементов не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
Смотрите также ungrabKeyboard(), grabMouse() и setFocus().
Получает ввод мыши.
Этот элемент будет получать все события мыши для сцены, пока не произойдёт одно из следующих событий:
Когда элемент получает ввод мыши, он получает событие QEvent::GrabMouse. Когда он теряет ввод мыши, он получает событие QEvent::UngrabMouse. Эти события могут быть использованы для определения когда элемент получает или теряет ввод мыши с помощью других способов кроме получения кнопок мыши.
Почти никогда не надо явно получать ввод мыши в Qt, так как Qt получает и освобождает его разумно. В частности, Qt получает ввод мыши когда вы нажимаете кнопку мыши и сохраняет его пока вы не освободите последнюю кнопку мыши. Также, виджеты Qt::Popup неявно вызывают grabMouse() когда показываются и ungrabMouse() когда прячутся.
Заметьте, что только видимые элементы могут получать ввод мыши. Вызов grabMouse() для невидимых элементов не имеет эффекта.
События клавиатуры не затрагиваются.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsScene::mouseGrabberItem(), ungrabMouse() и grabKeyboard().
Возвращает указатель на эффект данного элемента, если он есть; в противном случае возвращает 0.
Эта функция была введена в Qt 4.6.
Смотрите также setGraphicsEffect().
Возвращает указатель на группу данного элемента или 0, если этот элемент не является членом группы.
Смотрите также setGroup(), QGraphicsItemGroup и QGraphicsScene::createItemGroup().
Возвращает true если у данного элемента установлен курсор; в противном случае возвращает false.
По умолчанию у элемента нет установленного курсора. cursor() вернёт стандартный курсор в виде стрелки.
Смотрите также unsetCursor().
Возвращает true, если этот элемент активный, и он или его прокси фокуса (focus proxy) имеет фокус ввода с клавиатуры; в противном случае возвращает false.
Смотрите также focusItem(), setFocus(), QGraphicsScene::setFocusItem() и isActive().
Прячет элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(false).
Смотрите также show() и setVisible().
Этот обработчик события event может быть переопределён чтобы получать события входа курсора мыши в область элемента над этим элементом. Реализация по умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события выхода курсора за границы элемента. Реализация по умолчанию вызывает update(); в противном случае он ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverMoveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события перемещения курсора мыши над элементом. Реализация по умолчанию ничего не делает.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Смотрите также hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() и setAcceptHoverEvents().
Этот обработчик события event может быть переопределён чтобы получать события метода ввода для этого элемента. Реализация по умолчанию игнорирует это событие.
Смотрите также inputMethodQuery() и sceneEvent().
Возвращает текущие подсказки метода ввода для данного элемента.
Подсказки метода ввода относятся только к элементам ввода информации. Подсказки используются методом ввода для указания, как он будет работать. Например, если установлен флаг Qt::ImhNumbersOnly, метод ввода может изменить свои визуальные компоненты чтобы отразить, что можно вводить только цифры.
Эффект может варьироваться между реализациями метода ввода.
Эта функция была введена в Qt 4.6.
Смотрите также setInputMethodHints(), inputMethodQuery() и QInputContext.
Этот метод важен только для элементов ввода. Он используется методом ввода для запроса набора свойств элемента чтобы обеспечить поддержку сложных операций методов ввода, таких как поддержку окружающего текста и преобразований. query указывает какое свойство запрашивается.
Смотрите также inputMethodEvent(), QInputMethodEvent и QInputContext.
Устанавливает фильтр событий для этого элемента на filterItem, в результате чего все события этого элемента сначала проходят через функцию элемента filterItem sceneEventFilter().
Чтобы фильтровать события другого элемента, установите для него в качестве фильтра событий этот элемент. Пример:
QGraphicsScene scene; QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20)); QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20)); line->installSceneEventFilter(ellipse); // события элемента line фильтруются функцией sceneEventFilter() элемента ellipse. ellipse->installSceneEventFilter(line); // события элемента ellipse фильтруются функцией sceneEventFilter() элемента line.
Элемент может фильтровать события только для элементов этой же сцены. Также элемент не может фильтровать собственные события; вместо этого вы можете переопределить sceneEvent().
Элементы должны принадлежать сцене чтобы могли быть установлены и использованы фильтры событий сцены.
Смотрите также removeSceneEventFilter(), sceneEventFilter() и sceneEvent().
Возвращает true, если данный элемент активен; в противном случае возвращает false.
Элемент может быть активен только если активна сцена. Элемент активен, если он сам является панелью или потомком панели. Элементы в неактивной панели являются неактивными.
Когда в сцене нет активной панели элементы, которые не являются частью панели, отслеживают активацию сцены.
Только активные элементы могут получать фокус ввода.
Эта функция была введена в Qt 4.6.
Смотрите также QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel() и isPanel().
Возвращает true если этот элемент является предком элемента child (т.е. если этот элемент является родителем child или родителем одного из предков child).
Смотрите также parentItem().
Возвращает true, если данный элемент заблокирован модальной панелью, в противном случае - false. Если blockingPanel не равен нулю, будет установлен blockingPanel на модальной панели, которая заблокировала данный элемент. Если данный элемент не блокирован, то blockingPanel не будет установлен этой функцией.
Эта функция всегда возвращает false для элементов вне сцены.
Эта функция была введена в Qt 4.6.
Смотрите также panelModality(), setPanelModality() и PanelModality.
Возвращает true, если данный элемент усечен. Элемент усечен, если у него либо установлен флаг ItemClipsToShape либо если у него или у любого из его предков установлен флаг ItemClipsChildrenToShape.
Отсечение влияет на внешний вид элемента (т.е. отрисовку), а также на доставку событий мыши и наведения мыши.
Смотрите также clipPath(), shape() и setFlags().
Возвращает true если элемент разблокирован; в противном случае возвращает false.
Смотрите также setEnabled().
Возвращает true если ограничивающий прямоугольник этого элемента полностью закрыт непрозрачной фигурой любого сталкивающегося элемента, находящегося выше него (т.е. с большим значением по оси Z чем у этого элемента).
Её реализация основана на вызове isObscuredBy(), которую вы можете переопределить чтобы предоставить собственный алгоритм сокрытия.
Смотрите также opaqueArea().
Эта вспомогательная функция эквивалента вызову isObscured(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Возвращает true если прямоугольник rect полностью скрыт непрозрачной фигурой любого сталкивающегося с ним элемента, находящегося выше него (т.е. с большим значением по оси Z чем у этого элемента).
В отличие от варианта функции isObscured() по умолчанию, эта функция не вызывает isObscuredBy().
Эта функция была введена в Qt 4.3.
Смотрите также opaqueArea().
Возвращает true если ограничивающий прямоугольник этого элемента полностью закрыт непрозрачной фигурой элемента item.
Базовая реализация переводит область элемента item opaqueArea() в координатную систему этого элемента, а затем проверяет содержится ли boundingRect() этого элемента в данной фигуре полностью.
Вы можете переопределить эту функцию чтобы предоставить собственный алгоритм определения закрывается ли этот элемент элементом item.
Смотрите также opaqueArea() и isObscured().
Возвращает true если элемент является панелью; в противном случае возвращает false.
Эта функция была введена в Qt 4.6.
Смотрите также QGraphicsItem::panel() и ItemIsPanel.
Возвращает true если этот элемент выбран; в противном случае возвращает false.
Элементы группы наследуют состояние выделения группы.
Элементы по умолчанию не выделены.
Смотрите также setSelected() и QGraphicsScene::setSelectionArea().
Возвращает true если данный элемент находится под курсором одном из видов; в противном случае возвращает false.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsScene::views() и QCursor::pos().
Возвращает true если элемент видим; в противном случае возвращает false.
Заметьте, что общая видимость элемента не связана с тем, отображается ли он QGraphicsView или нет.
Смотрите также setVisible().
Возвращает true если элемент видимым родителю parent; в противном случае возвращает false. parent может быть равен 0, в этом случае эта функция вернёт, является ли элемент видимым сцене или нет.
Элемент может быть невидим предкам, даже если isVisible() равно true. Он также может быть видим предкам, даже если isVisible() равно false. Если любой предок спрятан, сам элемент будет неявно спрятан, в этом случае эта функция вернёт false.
Эта функция была введена в Qt 4.4.
Смотрите также isVisible() и setVisible().
Возвращает true если этот элемент является виджетом (т.е. QGraphicsWidget); в противном случает возвращает false.
Эта функция была введена в Qt 4.4.
Возвращает true если этот элемент является окном QGraphicsWidget; в противном случае возвращает false.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsWidget::windowFlags().
Эта виртуальная функция вызывается QGraphicsItem для оповещения пользовательских элементов о том, что изменилась некоторая часть состояний элемента. Переопределив эту функцию вы сможете реагировать на события и, в некоторых случаях ( в зависимости от change), произвести настройку.
change это параметр элемента, который изменяется. value это новое значение; тип значения зависит от change.
Пример:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionChange && scene()) { // value - это новое положение. QPointF newPos = value.toPointF(); QRectF rect = scene()->sceneRect(); if (!rect.contains(newPos)) { // Сохраняем элемент внутри прямоугольника сцены. 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, которая отображает координаты данного элемента на другой элемент other. Если ok не ноль, и если нет такого преобразования, то булево значение, на которое указывает ok, будет установлено равным false; в противном случае оно будет установлено равным true.
Это преобразование предоставляет альтернативу функциям mapToItem() или mapFromItem(), возвращая соответствующий результат преобразования, так что вы можете отображать контуры и координаты сами. Это также поможет вам писать более эффективный код при неоднократном отображении между одними и теми же двумя элементами.
Замечание: В редких случаях не имеется преобразования, которое выполняет отображение между двумя элементами.
Эта функция была введена в Qt 4.5.
Смотрите также mapToItem(), mapFromItem() и deviceTransform().
Этот обработчик события event может быть переопределён чтобы получать события нажатия клавиш для этого элемента. Реализация по умолчанию игнорирует это событие. Если вы переопределите этот обработчик, то по умолчанию событие будет принято.
Заметьте, что события нажатия клавиатуры получаются только тем элементами, для которых установлен флаг ItemIsFocusable и у которых есть фокус ввода клавиатуры.
Смотрите также keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события отпускания клавиш для этого элемента. Реализация по умолчанию игнорирует это событие. Если вы переопределите этот обработчик, то по умолчанию событие будет принято.
Заметьте, что события нажатия клавиатуры получаются только тем элементами, для которых установлен флаг ItemIsFocusable и у которых есть фокус ввода клавиатуры.
Смотрите также keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() и sceneEvent().
Переводит точку point, находящуюся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённые координаты.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также itemTransform(), mapToItem(), mapFromParent(), transform() и Система координат графического представления.
Отображает полигон polygon, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает полученный таким образом полигон.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также itemTransform(), mapToItem(), mapFromParent(), transform() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе элемента item, в координатную систему этого элемента и возвращает переведённый путь.
Если item равен 0, эта функция возвращает то же самое, что и mapFromScene().
Смотрите также itemTransform(), mapFromParent(), mapFromScene(), mapToItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapFromItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapFromItem(item, QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённую координату.
Смотрите также mapFromItem(), mapFromScene(), transform(), mapToParent() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToParent(), mapFromItem(), transform() и Система координат графического представления.
Отображает полигон polygon, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает полученный таким образом полигон.
Смотрите также mapToParent(), mapToItem(), transform() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе родителя этого элемента, в координатную систему этого элемента и возвращает переведённый путь.
Смотрите также mapFromScene(), mapFromItem(), mapToParent() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapFromItem(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapFromParent(QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённую координату.
Смотрите также mapFromItem(), mapFromParent(), transform(), mapToScene() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToScene(), mapFromItem(), transform() и Система координат графического представления.
Переводит полигон polygon, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый полигон.
Смотрите также mapToScene(), mapFromParent(), transform() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе сцены этого элемента, в координатную систему этого элемента и возвращает переведённый путь.
Смотрите также mapFromParent(), mapFromItem(), mapToScene() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapFromScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapFromScene(QPointF(x, y)).
Отображает прямоугольник rect, находящийся в системе координат элемента item, в систему координат этого элемента и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Если элемент item равен 0, то эта функция возвращает то же самое, что и mapRectFromScene().
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная фукнция эквивалента вызову mapRectFromItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Отображает прямоугольник rect, находящийся в системе координат родительского элемента, в систему координат этого элемента и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapRectFromParent(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Отображает прямоугольник rect, находящийся в системе координат сцены, в систему координат этого элемента и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapRectFromScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Отображает прямоугольник rect, находящийся в системе координат данного элемента, в систему координат элемента item и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Если item равен 0, эта функция возвращает то же самое, что и mapRectToScene().
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapRectToItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Отображает прямоугольник rect, находящийся в системе координат данного элемента, в систему координат родителя и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapRectToParent(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Отображает прямоугольник rect, находящийся в системе координат данного элемента, в систему координат сцены и возвращает отображённый прямоугольник как новый прямоугольник (т.е. ограничивающий прямоугольник получающегося многоугольника).
Эта функция была введена в Qt 4.5.
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapRectToScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.5.
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённую координату.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый прямоугольник в виде полигона.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый полигон.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему элемента item и возвращает переведённый путь.
Если item равен 0, эта функция возвращает то же самое, что и mapToScene().
Смотрите также itemTransform(), mapToParent(), mapToScene(), mapFromItem() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapToItem(item, QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapToItem(item, QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённую координату. Если у элемента нет родителя, точка point будет преобразована в систему координат сцены.
Смотрите также mapToItem(), mapToScene(), transform(), mapFromParent() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый прямоугольник в виде полигона. Если у элемента нет родителя, прямоугольник rect будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Система координат графического представления.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый полигон. Если у элемента нет родителя, полигон polygon будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему его родителя и возвращает переведённый путь. Если у элемента нет родителя, путь path будет преобразован в систему координат сцены.
Смотрите также mapToScene(), mapToItem(), mapFromParent() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapToParent(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapToParent(QPointF(x, y)).
Переводит точку point, находящуюся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённую координату.
Смотрите также mapToItem(), mapToParent(), transform(), mapFromScene() и Система координат графического представления.
Переводит прямоугольник rect, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый прямоугольник в виде полигона.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Система координат графического представления.
Переводит полигон polygon, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый полигон.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Система координат графического представления.
Переводит путь path, находящийся в координатной системе этого элемента, в координатную систему сцены и возвращает переведённый путь.
Смотрите также mapToParent(), mapToItem(), mapFromScene() и Система координат графического представления.
Эта вспомогательная функция эквивалента вызову mapToScene(QRectF(x, y, w, h)).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову mapToScene(QPointF(x, y)).
Этот обработчик события event может быть переопределён чтобы получать события двойного клика для этого элемента.
При двойном клике на элементе, он сначала получит событие нажатия кнопки мыши, затем отпускания кнопки мыши (т.е. клик), затем событие двойного клика и, наконец, событие отпускания кнопки мыши.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по умолчанию вызывает mousePressEvent(). Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseDoubleClickEvent().
Обратите внимание на то, что элемент не будет получать события двойного щелчка мышью если он не является ни selectable, ни movable (одиночные щелчки мышью в этом случае игнорируются, что останавливает генерацию двойных щелчков).
Смотрите также mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события перемещения мыши для этого элемента. Если вы получаете этот элемент, вы можете быть уверены что он также получает события нажатия кнопок мыши и что у этого элемента есть фокус ввода мыши.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseMoveEvent().
Пожалуйста, обратите внимание на то, что mousePressEvent() определяет, какой графический элемент является тем, что получает события мыши. За подробностями обращайтесь к описанию mousePressEvent().
Смотрите также mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события нажатия клавиш мыши для этого элемента. Событие нажатия кнопок мыши доставляется только тем элементам, которые принимают нажатую кнопку. По умолчанию принимаются все кнопки мыши, но вы можете изменить это вызвав setAcceptedMouseButtons().
Событие нажатия кнопок мыши определяет какой элемент должен получить фокус ввода мыши (смотрите QGraphicsScene::mouseGrabberItem()). Если вы не переопределите эту функцию, событие нажатия передастся ближайшему элементу под этим элементом, и больше событий мыши данному элементу доставлено не будет.
Если вы не переопределите эту функцию, событие event будет принято по умолчанию (смотрите QEvent::accept()), и этот элемент получит фокус ввода мыши. Это позволит элементу получать дальнейшие события перемещения, отпускания и двойного клика. Если вы вызовите QEvent::ignore() для event, этот элемент потеряет фокус ввода мыши и event будет передан ближайшему элементу под ним. Больше событий мыши данному элементу доставлено не будет, пока не будет получено событие нажатия кнопки мыши.
Реализация по умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mousePressEvent().
Событие игнорируется QEvent::ignore() для элементов, которые не являются ни movable, ни selectable.
Смотрите также mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() и sceneEvent().
Этот обработчик события event может быть переопределён чтобы получать события отпускания клавиш мыши для этого элемента.
Вызов QEvent::ignore() или QEvent::accept() для события event не имеет эффекта.
Реализация по умолчанию обрабатывает базовые взаимодействия с элементом, такие как выделение и перемещение. Если вы хотите сохранить базовую реализацию при переопределении этой функции, вызовите в вашей переопределенной функции QGraphicsItem::mouseReleaseEvent().
Пожалуйста, обратите внимание на то, что mousePressEvent() определяет, какой графический элемент является тем, что получает события мыши. За подробностями обращайтесь к описанию mousePressEvent().
Смотрите также mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() и sceneEvent().
Перемещает элемент на dx точек по горизонтали и dy точек по вертикали. Эта вспомогательная функция эквивалента вызову setPos(pos() + QPointF(dx, dy)).
Возвращает локальную прозрачность данного элемента, которая находится между 0.0 (прозрачный) и 1.0 (непрозрачный). Это значение комбинируется со значениями родителя и предков в effectiveOpacity(). Фактическая прозрачность предопределяет, как визуализируется элемент.
Свойство прозрачности определяет состояние рисовальщика, передаваемого в функцию paint(). Если элемент кэширован, т.е. ItemCoordinateCache или DeviceCoordinateCache, то фактическое свойство будет применено к кэшу элемента, так как он визуализируется.
По умолчанию прозрачность равна 1.0; полная непрозрачность.
Эта функция была введена в Qt 4.5.
Смотрите также setOpacity(), paint(), ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
Эта виртуальная функция возвращает форму, представляющую область где этот элемент не является прозрачным. Область является непрозрачной, если она заполнена с использованием непрозрачной кисти или цвета (т.е. не прозрачна).
Эта функция используется isObscuredBy(), которая вызывается нижележащими элементами для определения не закрыты ли они этим элементом.
Реализация по умолчанию возвращает пустой путь QPainterPath, показывая что этот элемент полностью прозрачен и не закрывается другими элементами.
Смотрите также isObscuredBy(), isObscured() и shape().
Эта функция, обычно вызываемая 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, половина контура будет нарисована вне рисуемой фигуры (т.е. если толщина пера равна двум единицам, вы должны рисовать контур с отступом в одну единицу от boundingRect()). QGraphicsItem не поддерживает использование косметического пера с нулевой шириной.
Все рисования происходят в локальных координатах.
Смотрите также setCacheMode(), QPen::width(), Координаты элемента и ItemUsesExtendedStyleOption.
Возвращает панель элемента или 0, если этот элемент не имеет панели. Если элемент является панелью, он вернёт самого себя. В противном случае будет возвращён ближайший предок, который является панелью.
Эта функция была введена в Qt 4.6.
Смотрите также isPanel() и ItemIsPanel.
Возвращает модальность для данного элемента.
Эта функция была введена в Qt 4.6.
Смотрите также setPanelModality().
Возвращает указатель на родительский элемент. Если у этого элемента нет родителя, возвращается 0.
Смотрите также setParentItem() и childItems().
Возвращает указатель на родителя элемента, приводя его к типу QGraphicsObject. Возвращает 0 если родительский элемент не является QGraphicsObject.
Эта функция была введена в Qt 4.6.
Смотрите также parentItem() и childItems().
Возвращает указатель на родительский виджет элемента. Родительским виджетом элемента является его ближайший родитель, являющийся виджетом.
Эта функция была введена в Qt 4.4.
Смотрите также parentItem() и childItems().
Возвращает положение элемента в родительских координатах. Если у элемента нет родителя, положение задаётся в координатах сцены.
Позиция элемента описывает ее базис (локальные координаты (0, 0)) в родительских координатах; эта функция возвращает тоже что и mapToParent(0, 0).
Для удобства вы также можете вызвать scenePos() для определения позиции элемента в координатах сцены вне зависимости от его родителя.
Смотрите также x(), y(), setPos(), transform() и Система координат графического представления.
Подготавливает элемент для смены геометрии. Вызывайте эту функцию перед сменой ограничивающего прямоугольника элемента чтобы поддерживать индекс QGraphicsScene в актуальном состоянии.
При необходимости prepareGeometryChange() вызовет update().
Пример:
void CircleItem::setRadius(qreal newRadius) { if (radius != newRadius) { prepareGeometryChange(); radius = newRadius; } }
Смотрите также boundingRect().
Удаляет фильтр событий этого элемента от filterItem.
Смотрите также installSceneEventFilter().
Сбрасывает матрицу преобразований этого элемента или все свойства преобразования в их значения по умолчанию. Это эквивалентно вызову setTransform(QTransform()).
Эта функция была введена в Qt 4.3.
Смотрите также setTransform() и transform().
Возвращает вращение по часовой стрелке, в градусах, вокруг оси Z. Значение по умолчанию равно 0 (т.е. элемент не вращался).
Вращение комбинируется с scale(), transform() и transformations() элемента для отображения системы координат элемента на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также setRotation(), transformOriginPoint() и Преобразования.
Возвращает масштабный коэффициент элемента. Значение по умолчанию равно 1.0 (т.е. элемент не масштабирован).
Масштабирование комбинируется с rotation(), transform() и transformations() элемента для отображения системы координат элемента на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также setScale(), rotation() и Преобразования.
Возвращает текущую сцену элемента или 0, если элемент не расположен на сцене.
Чтобы добавить или переместить элемент на сцену, вызовите QGraphicsScene::addItem().
Возвращает ограничивающий прямоугольник элемента в координатах сцены комбинируя sceneTransform() с boundingRect().
Смотрите также boundingRect() и Система координат графического представления.
Эта виртуальная функция получает события для этого элемента. Переопределите эту функцию для перехвата событий прежде чем они будут направлены специализированным обработчикам событий contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() и mouseDoubleClickEvent().
Возвращает true если событие было распознано и обработано; в противном случае (например, тип события не был распознан) возвращается false.
event это перехватываемое событие.
Фильтрует события для элемента watched. event это фильтруемое событие.
Переопределение этой функции в подклассе делает возможным использование элемента в качестве фильтра для других элементов, перехватывая все события которые посылаются им прежде чем они смогут их обработать.
Переопределённая функция должна возвращать true чтобы предотвратить дальнейшую обработку данного события, обеспечивая что оно не будет доставлено другим наблюдающим элементам, или вернуть false, показывая что элемент должен быть передан дальше по системе событий.
Смотрите также installSceneEventFilter().
Возвращает положение элемента в координатах сцены. Это эквивалентно вызову mapToScene(0, 0).
Смотрите также pos(), sceneTransform() и Система координат графического представления.
Возвращает матрицу преобразований сцены этого элемента. Эта матрица может быть использована для перевода координат и геометрических фигур из локальной координатной системы этого элемента в систему координат сцены. Для перевода координат сцены сначала необходимо инвертировать возвращаемую матрицу.
Пример:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // возвращает QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // возвращает QPointF(0, 0);
В отличие от transform(), которая возвращает только локальные преобразования элемента, эта функция включает позицию элемента (и всех его родителей) и всех свойств преобразования.
Эта функция была введена в Qt 4.3.
Смотрите также transform(), setTransform(), scenePos(), Система координат графического представления и Преобразования.
Прокручивает содержимое прямоугольника 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().
Если on равно true, этот элемент будет принимать события перетаскивания и бросания; в противном случае он будет прозрачен для них. По умолчанию элемент не принимает данные события.
Смотрите также acceptDrops().
Если enabled равно true, этот элемент будет принимать события перемещения над ним курсора мыши; в противном случае он будет игнорировать их. По умолчанию элементы не принимают данные события.
События перемещения мыши доставляются в том случае, когда нет других элементов, обладающих фокусом ввода мыши. Они посылаются когда курсор мыши входит в область элемента, когда он перемещается внутри его области и когда он её покидает. События перемещения мыши обычно используются для подсветки элемента когда на него наводится курсор и для отслеживания курсора мыши когда он находится над элементом (эквивалентноQWidget::mouseTracking).
Элементы-родители получают события входа курсора мыши в область элемента прежде потомков и событие выхода курсора за область элемента после них. Элемент не получает событие выхода за область элемента если курсор переходит в область другого потомка; он не получит его пока курсор не выйдет за область, включающую области всех его потомков.
Если родительский элемент обрабатывает события потомков, он будет получать события наведения мыши, перемещения и бросания когда курсор переходит от одного дочернего элемента к другому, но он не получит ни события входа в область элемента и выхода за неё, ни события начала и окончания перетаскивания от имени его потомков.
QGraphicsWidget с декорацией окна будет принимать события перемещения мыши независимо от значения acceptHoverEvents().
Эта функция была введена в Qt 4.4.
Смотрите также acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() и hoverLeaveEvent().
Если enabled равно true, этот элемент будет принимать сенсорные события; в противном случае он будет игнорировать их. По умолчанию элементы не принимают сенсорные события.
Эта функция была введена в Qt 4.6.
Смотрите также acceptTouchEvents().
Устанавливает кнопки buttons мыши для которых элемент будет принимать события.
По умолчанию принимаются все кнопки мыши. Если элемент принимает кнопку мыши, он получит фокус ввода мыши когда ему будет доставлено событие нажатия этой кнопки. Если элемент не принимает нажатие кнопки мыши, QGraphicsScene передаст это событие ближайшему элементу под ним, которые его примет.
Чтобы заблокировать события мыши для элемента (т.е. сделать его прозрачным для событий мыши), вызовите setAcceptedMouseButtons(0).
Смотрите также acceptedMouseButtons() и mousePressEvent().
Если active равно true, и сцена активна, то панель данного элемента будет активирована. В противном случае, панель деактивируется.
Если элемент не является частью активной сцены, active решит, что произойдет с панелью, когда сцена становится активной или в сцену добавлен элемент. Если true, панель элемента будет активирована, когда элемент либо добавлен в сцену, либо сцена активирована. В противном случае, элемент останется неактивным вне зависимости от состояния активированности сцены.
Эта функция была введена в Qt 4.6.
Смотрите также isPanel(), QGraphicsScene::setActivePanel() и QGraphicsScene::isActive().
Устанавливает точность ограничивающей области элемента равной granularity; значение может изменяться от 0 до 1. Значение по умолчанию равно 0 (т.е. наименьшая точность, в этом случае ограничивающая область элемента равна его ограничивающему прямоугольнику).
Точность используется boundingRegion() для вычисления насколько точным должен быть ограничивающий регион элемента. Максимальная точность равна 1, в этом случае boundingRegion() вернёт наилучший возможный для соответствующего устройства контур (т.е. для области отображения QGraphicsView получится область с точностью до пиксела). Минимальная точность равна 0. Значение granularity описывает коэффициент между разрешением устройства и разрешением ограничивающего региона (т.е. значение 0.25 предоставит регион где каждый кусочек соответствует 4x4 пикселам/единицам устройства).
Эта функция была введена в Qt 4.4.
Смотрите также boundingRegionGranularity().
Устанавливает режим кэширования элемента равным mode.
Необязательный аргумент logicalCacheSize используется только для режима ItemCoordinateCache и описывает разрешение буфера кэша; если logicalCacheSize равен (100, 100), QGraphicsItem будет размещён в 100x100 пикселях в графической памяти независимо от логического размера самого элемента. По умолчанию QGraphicsItem использует размер boundingRect(). Для всех режимов кэширования кроме ItemCoordinateCache, logicalCacheSize игнорируется.
Кэширование может заметно ускорить отрисовку если отрисовка элемента занимает затрачивает много времени. В некоторых случаях кэш может замедлить отрисовку, в частности, когда элемент тратит меньше времени на отрисовку чем QGraphicsItem тратит на отрисовку из кэша. Если кэширование включено, функция элемента paint() будет вызываться только один раз для каждого вызова update(); для любого последующего запроса перерисовки каркас графического представления будет использовать кэшированное изображение. Этот подход работает достаточно хорошо с QGLWidget, который хранит кэш в виде текстур OpenGL.
Не забывайте о том, что возможно потребуется изменить лимит кэша QPixmapCache чтобы получить оптимальную производительность.
Вы можете прочитать больше о различных режимах кэша в документации CacheMode.
Эта функция была введена в Qt 4.4.
Смотрите также cacheMode(), CacheMode и QPixmapCache::setCacheLimit().
Устанавливает текущую форму курсора элемента равной cursor. Курсор мыши будет принимать эту форму когда будет находится над этим элементом. Смотрите список предопределённых объектов курсора для диапазона полезных форм.
Для элемента-редактор можно использовать курсор в виде прямой линии:
item->setCursor(Qt::IBeamCursor);
Если курсор не был установлен, будет использован курсор элемента, находящегося ниже.
Смотрите также cursor(), hasCursor(), unsetCursor(), QWidget::cursor и QApplication::overrideCursor().
Устанавливает пользовательские данные элемента для ключа key равными value.
Пользовательские данные элемента полезны для хранения произвольных свойств для любого элемента. Qt не использует эту особенность для хранения данных; она предоставляется только для удобства пользователя.
Смотрите также data().
Если enabled равна true, то элемент является разблокированным; в противном случае он заблокирован.
Заблокированные элементы являются видимыми, но он не получают никаких событий, не могут получить фокус и не могут быть выделены. События мыши отменяются; они также не передаются если элемент также является невидимым или он не принимает события мыши (смотрите acceptedMouseButtons()). Заблокированный элемент не может получить фокус ввода мыши, поэтому если он у него был, он теряет его если становится заблокированным, также как и фокус.
Заблокированные элементы обычно отрисовываются серыми цветами (смотрите QPalette::Disabled).
Если вы заблокируете родительский элемент, все его потомки также будут заблокированы. Если вы разблокируете родительский элемент, все его потомки будут разблокированы, если они не были заблокированы явно (т.е. если вы вызывали для потомка setEnabled(false), после того как его родитель будет заблокирован и разблокирован снова).
Элементы по умолчанию разблокированы.
Замечание: Если вы установите фильтр событий, вы всё равно сможете перехватывать события прежде чем они будут доставлены элементам; этот механизм работает вне зависимости от состояния блокировки элемента.
Смотрите также isEnabled().
Если enabled равно true, этот элемент устанавливается для фильтрации всех событий для всех его потомков (т.е. все события, направленные любому из его потомков, вместо этого посылаются ему); в противном случае, если enabled равно false, этот элемент будет обрабатывать только собственные события. Значение по умолчанию равно false.
Эта функция была введена в Qt 4.6.
Смотрите также filtersChildEvents().
Если enabled равно true, то флаг элемента flag будет установлен; в противном случае он будет снят.
Смотрите также flags() и setFlags().
Устанавливает флаги элемента равными flags. Все флаги в flags будут установлены; все флаги не указанные в flags будут сняты.
Если у элемента был фокус и flags не устанавливает ItemIsFocusable, то в результате вызова этой функции он его потеряет. Также, если элемент был выбран и flags не устанавливают ItemIsSelectable, элемент автоматически потеряет выделение.
По умолчанию все флаги отключены. (QGraphicsWidget включает флаг ItemSendsGeometryChanges по умолчанию для того, чтобы отслеживать изменения позиции.)
Смотрите также flags() и setFlag().
Даёт этому элементу фокус ввода клавиатуры. Аргумент focusReason будет передан в любое событие фокуса, порождённое этой функцией; он используется чтобы дать объяснение то, что заставит элемент получить фокус.
Только активированные элементы, которые установили флаг ItemIsFocusable, может принимать фокус ввода с клавиатуры.
Если этот элемент является невидимым, не активным, или не связанным со сценой, он не получит прямой фокус ввода. Однако, он будет зарегистрирован как предпочтительный элемент фокуса для своего поддерева элементов, становясь позднее видимым.
В результате вызова этой функции этот элемент получит события получения фокуса с focusReason. Если другой элемент уже имеет фокус, этот элемент первым получит событие потери фокуса, указывающее что он потерял фокус ввода.
Смотрите также clearFocus(), hasFocus(), focusItem() и focusProxy().
Устанавливает прокси фокуса (focus proxy) элемента равным item.
Если элемент имеет прокси фокуса, то прокси фокуса будет получать фокус ввода когда элемент получает фокус ввода. Сам элемент будет по-прежнему иметь фокус (т.е. hasFocus() будет возвращать true), но только прокси фокуса будет получать ввод с клавиатуры.
Прокси фокуса может иметь свой прокси фокуса, и так далее. В таком случае, ввод с клавиатуры будет обрабатываться самым ближайшим внешним прокси фокуса.
Прокси фокуса элемента item должен принадлежать той же сцены, что и этот элемент.
Эта функция была введена в Qt 4.6.
Смотрите также focusProxy(), setFocus() и hasFocus().
Устанавливает effect в качестве эффекта элемента. Если уже имеется эффект, установленный на этот элемент, то QGraphicsItem будет удалять имеющийся эффект перед установкой нового эффекта effect.
Если эффект effect установлена на другом элемента, то setGraphicsEffect() удалит эффект с элемента и установит его на данный элемент.
QGraphicsItem становится владельцем effect.
Замечание: Эта функция применит эффект к себе и всем потомкам.
Эта функция была введена в Qt 4.6.
Смотрите также graphicsEffect().
Добавляет этот элемент в группу group. Если group равна 0, этот элемент будет удалён из всех текущих групп и будет добавлен как потомок родителю предыдущей группы.
Смотрите также group() и QGraphicsScene::createItemGroup().
Устанавливает текущие подсказки метода ввода данного элемента равными hints.
Эта функция была введена в Qt 4.6.
Смотрите также inputMethodHints(), inputMethodQuery() и QInputContext.
Устанавливает локальную прозрачность элемента opacity между 0.0 (прозрачный) и 1.0 (непрозрачный). Локальная прозрачность элемента комбинируется с прозрачностью родителя и предков в effectiveOpacity().
По умолчанию прозрачность копируется от родителя к потомку, поэтому если прозрачность родителя равна 0.5 и у потомка также равна 0.5, то фактическая прозрачность потомка будет равна 0.25.
Свойство прозрачности определяет состояние рисовальщика, передаваемого в функцию paint(). Если элемент кэширован, т.е. ItemCoordinateCache или DeviceCoordinateCache, то фактическое свойство будет применено к кэшу элемента, так как он визуализируется.
Имеется два флага элемента, которые влияют на то, как прозрачность элемента комбинируется с прозрачностью родителя: ItemIgnoresParentOpacity и ItemDoesntPropagateOpacityToChildren.
Эта функция была введена в Qt 4.5.
Смотрите также opacity() и effectiveOpacity().
Устанавливает модальность данного элемента равной panelModality.
Изменение модального видимого элемента подействует немедленно.
Эта функция была введена в Qt 4.6.
Смотрите также panelModality().
Устанавливает родителя элемента равным newParent. Если у элемента уже был родитель, то сначала он удаляется у него. Если newParent равен 0, то этот элемент становится элементом верхнего уровня.
Обратите внимание на то, что это неявно добавит графический элемент к сцене родителя. Вы не должны добавлять элемент к сцене сами.
Вызов этой функции на элементе, который является предком newParent, имеет неопределённое поведение.
Смотрите также parentItem() и childItems().
Устанавливает позицию элемента равной pos, которая задана в координатах родителя. Для элементов без родителя, pos задана в координатах сцены.
Позиция элемента описывает его базис (локальную координату (0, 0)) в координатах родителя.
Смотрите также pos(), scenePos() и Система координат графического представления.
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову setPos(QPointF(x, y)).
Устанавливает вращение по часовой стрелке на угол angle, в градусах, вокруг оси Z. Значение по умолчанию равно 0 (т.е. элемент не вращался). Присваивание отрицательного значения будет вращать элемент против часовой стрелки. Обычно угол вращения находится в диапазоне (-360, 360), но ему также можно присваивать значения вне этого диапазона (например, вращение на 370 градусов то же самое, что и вращение на 10 градусов).
Элемент вращается вокруг своей исходной точки преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другое исходное преобразование, вызывая setTransformOriginPoint().
Вращение комбинируется с scale(), transform() и transformations() элемента для отображения системы координат элемента на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также rotation(), setTransformOriginPoint() и Преобразования.
Устанавливает масштабный коэффициент factor элемента. Значение по умолчанию равно 1.0 (т.е. элемент не масштабирован). Масштабный коэффициент 0.0 сжимает элемент в одну точку. Если вы предоставите отрицательный масштабный коэффициент, то элемент будет перевёрнут и отражён (т.е. повёрнут на 180 градусов).
Элемент масштабируется вокруг своей исходной точки преобразования, которая по умолчанию равна (0, 0). Вы можете выбрать другое исходное преобразование, вызывая setTransformOriginPoint().
Масштабирование комбинируется с rotation(), transform() и transformations() элемента для отображения системы координат элемента на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также scale(), setTransformOriginPoint() и Пример "Transformations".
Если selected равна true, то элемент будет выделен; в противном случае выделение будет снято.
Если элемент входит в состав группы, состояние выделения всей группы будет переключаться этой функции. Если группа выделена, все элементы в группе будут выделены, и если группа не выделена, ни один элемент группы не будет выделен.
Только видимые, разблокированные и выделяемые элементы могут быть выделены. Если selected равно true и этот элемент или невидим, или заблокирован, или его нельзя выделить, эта функция ничего не делает.
По умолчанию элементы не могут быть выделены. Чтобы разрешить выделение, установите флаг ItemIsSelectable.
Эта функция предоставлена для удобства, позволяя переключать состояние выделения для отдельных элементов. Тем не менее, более общим способом выделения элементов является вызов QGraphicsScene::setSelectionArea(), которая вызовет эту функцию для всех видимых, разблокированных и выделяемых элементов, находящихся внутри указанной области сцены.
Смотрите также isSelected() и QGraphicsScene::selectedItems().
Устанавливает всплывающую подсказку элемента равной toolTip. Если toolTip является пустой, то всплывающая подсказка элемента очищается.
Смотрите также toolTip() и QToolTip.
Устанавливает текущую матрицу преобразований элемента равной matrix.
Если combine равен true, тогда matrix комбинируется с текущей матрицей; в противном случае matrix замещает текущую матрицу. По умолчанию combine равно false.
Для упрощения взаимодействий с элементами, использующими преобразованный вид, QGraphicsItem предоставляет функции mapTo... и mapFrom... которые осуществляют перевод между координатами элемента и сцены. Например, вы можете вызвать mapToScene() чтобы перевести координаты элемента в координаты сцены или mapFromScene() чтобы перевести из координат сцены в координаты элемента.
Матрица преобразования комбинируется с rotation(), scale() и transformations() элемента в комбинированное преобразование, которая отображает систему координат элемента на своего родителя.
Эта функция была введена в Qt 4.3.
Смотрите также transform(), setRotation(), setScale(), setTransformOriginPoint(), Система координат графического представления и Преобразования.
Устанавливает точку origin для преобразования координат элемента.
Эта функция была введена в Qt 4.6.
Смотрите также transformOriginPoint() и Преобразования.
Это перегруженная функция.
Устанавливает исходную точку для преобразования координат элемента. Это эквивалентно вызову setTransformOriginPoint(QPointF(x, y)).
Эта функция была введена в Qt 4.6.
Смотрите также setTransformOriginPoint() и Преобразования.
Установите список графических преобразований transformations (QGraphicsTransform), которые в настоящее время применимы к этому элементу.
Если все что вы хотите - повернуть или масштабировать элемент, то вы должны вызвать взамен setRotation() или setScale(). Если вы хотите установить произвольное преобразование на элемент, то вы должны вызвать setTransform().
QGraphicsTransform для применения и управления цепочкой отдельных операций преобразования элемента. Это особенно полезно в анимации, где каждая операция трансформации должна быть интерполирована независимо или по-разному.
Преобразования сочетаются с rotation(), scale() и transform() элемента для отображения системы координат элемент на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также transformations(), scale(), setTransformOriginPoint() и Преобразования.
Если visible равно true, тогда элемент становится видимым. В противном случае элемент становится невидимым. Невидимые элементы не отрисовываются и не получают никаких событий. В частности, события мыши передаются прямо через невидимые элементы и доставляются элементам, расположенным за ним. Невидимые элементы также нельзя выделить, они не могут получить фокус ввода и не определяются функциями QGraphicsScene.
Если элемент становится невидимым в то время когда у него есть фокус ввода мыши (т.е. пока он получает события перемещения мыши), он автоматически потеряет фокус ввода мыши и он не вернётся когда элемент станет видимым снова; он должен получить сигнал нажатия кнопки мыши чтобы вернуть фокус.
Также невидимый элемент не может получить фокус, так что если у элемента есть фокус и он становится невидимым, он теряет фокус и он не вернётся если элемент просто станет видимым снова.
Если вы спрячете родительский элемент, все его потомки также станут невидимыми. Если вы покажете родительский элемент, все его потомки станут видимыми, если они не были явно спрятаны (т.е. если вы вызвали setVisible(false) для потомка, он не будет показан даже если его родитель был спрятан и показан снова).
Элементы являются по умолчанию видимыми; нет необходимости вызывать setVisible() для новых элементов.
Смотрите также isVisible(), show() и hide().
Устанавливает координату x позиции элемента. Эквивалентно вызову setPos(x, y()).
Эта функция была введена в Qt 4.6.
Смотрите также x() и setPos().
Устанавливает координату y позиции элемента. Эквивалентно вызову setPos(x(), y).
Эта функция была введена в Qt 4.6.
Смотрите также y(), x() и setPos().
Устанавливает Z-координату элемента равной z. Координата Z определяет порядок расположения одноранговых (соседних) элементов. Соседний элемент с более высоким значением Z будет отрисован поверх другого соседнего элемента с более низким значением Z.
Если вы восстановите координату Z, порядок добавления элемента будет определяться его порядком расположения.
Значение по оси Z никак не влияет на размер элементов.
По умолчанию значение по оси Z равно 0.
Смотрите также zValue(), Сортировка, stackBefore() и ItemStacksBehindParent.
Возвращает фигуру этого элемента в виде QPainterPath в локальных координатах. Фигура используется для многих вещей включая определение столкновений, проверку попаданий и для функции QGraphicsScene::items().
Реализация по умолчанию вызывает boundingRect() чтобы вернуть простую фигуру, но подклассы могут переопределить эту функцию чтобы возвращать более точную фигуру для непрямоугольных элементов. Например, круглый элемент может возвращать эллипсис для более точного определения столкновений. Например:
QPainterPath RoundItem::shape() const { QPainterPath path; path.addEllipse(boundingRect()); return path; }
Контур фигуры может изменяться в зависимости от ширины и стиля пера, используемого для отрисовки. Если вы хотите включить этот контур в фигуру элемента, вы можете создать элемент из штрихов используя QPainterPathStroker.
Эта функция вызывается реализациями по умолчанию функций contains() и collidesWithPath().
Смотрите также boundingRect(), contains(), prepareGeometryChange() и QPainterPathStroker.
Отображает элемент. (Элементы по умолчанию видимы)
Эта вспомогательная функция эквивалентна вызову setVisible(true).
Смотрите также hide() и setVisible().
Помещает этот элемент перед соседним sibling, который должен быть соседним элементом (т.е. два элемента должны совместно использовать один и тот же родительский элемент или оба должны быть элементами верхнего уровня). Элемент sibling должен иметь такую координату Z что и этот элемент, в противном случае вызов это функции не имеет эффекта.
По умолчанию все соседние элементы располагаются в порядке добавления (т.е. первый добавляемый вами элемент отрисовывается перед следующим добавленным вами элементом). Если две координаты Z элемента различаются, тогда элемент с большей координатой Z отрисовывается сверху. Когда координаты Z одинаковы, порядок добавления будет определять порядок расположения.
Эта функция была введена в Qt 4.6.
Смотрите также setZValue(), ItemStacksBehindParent и Сортировка.
Возвращает графический элемент, приведенный к типу QGraphicsObject, если класс действительно является графическим объектом, в противном случае - 0.
Эта функция была введена в Qt 4.6.
Возвращает графический элемент, приведенный к типу QGraphicsObject, если класс действительно является графическим объектом, в противном случае - 0.
Эта функция была введена в Qt 4.6.
Возвращает всплывающую подсказку элемента или пустую строку QString если она не была установлена.
Смотрите также setToolTip() и QToolTip.
Возвращает элемент верхнего уровня этого элемента. Элемент верхнего уровня это предок этого элемента для которого родитель равен 0. Если у элемента нет родителя, тогда возвращается указатель на него (т.е. он сам является элементом верхнего уровня).
Смотрите также parentItem().
Возвращает указатель на виджет верхнего уровня для элемента (т.е. предка элемента, чей родитель равен 0, или элемент чей родитель не виджет), или 0 если у этого элемента нет виджета верхнего уровня. Если элемент сам является виджетом верхнего уровня, то эта функция возвращает указатель на него.
Эта функция была введена в Qt 4.4.
Возвращает матрицу преобразований этого элемента.
Матрица преобразования комбинируется с rotation(), scale() и transformations() элемента в комбинированное преобразование элемента.
Матрица преобразования по умолчанию является единичной матрице.
Эта функция была введена в Qt 4.3.
Смотрите также setTransform() и sceneTransform().
Возвращает исходную точку для преобразования в координатах элемента.
Значение по умолчанию равно QPointF(0,0).
Эта функция была введена в Qt 4.6.
Смотрите также setTransformOriginPoint() и Преобразования.
Возвращает список графических преобразований, которые в настоящее время применены к этому элементу.
QGraphicsTransform для применения и управления цепочкой отдельных операций преобразования элемента. Это особенно полезно в анимации, где каждая операция трансформации должна быть интерполирована независимо или по-разному.
Преобразования сочетаются с rotation(), scale() и transform() элемента для отображения системы координат элемент на родительский элемент.
Эта функция была введена в Qt 4.6.
Смотрите также setTransformations(), scale(), rotation(), transformOriginPoint() и Преобразования.
Возвращает тип элемента в виде целого числа. Все стандартные классы графических элементов связаны с уникальными значениями; смотрите QGraphicsItem::Type. Эта информация о типе используется qgraphicsitem_cast() для преобразования между типами.
Реализация (in QGraphicsItem) по умолчанию возвращает UserType.
Чтобы обеспечить использования qgraphicsitem_cast() с собственным элементом переопределите эту функцию и объявите значение перечисления Type равным типу вашего элемента. Пользовательские элементы должны возвращать значение большее или равное UserType (65536).
Например:
class CustomItem : public QGraphicsItem { ... enum { Type = UserType + 1 }; int type() const { // Разрешает использовать qgraphicsitem_cast с этим элементом. return Type; } ... };
Смотрите также UserType.
Освобождает фокус ввода клавиатуры.
Эта функция была введена в Qt 4.4.
Смотрите также grabKeyboard() и ungrabMouse().
Освобождает фокус ввода мыши.
Эта функция была введена в Qt 4.4.
Смотрите также grabMouse() и ungrabKeyboard().
Очищает курсор для этого элемента.
Смотрите также hasCursor() и setCursor().
Планирует перерисовку области этого элемента покрываемой прямоугольником rect. Вы можете вызывать эту функцию когда необходимо перерисовать элемент, например, когда у него изменяется вид или размер.
Эта функция не приводит к незамедлительной отрисовке; вместо этого она планирует запрос отрисовки, который будет обработан QGraphicsView после того как управление вернётся в цикл событий. Элемент будет перерисован только в том случае, если он виден в любом связанном виде.
Побочным эффектом перерисовки элемента будет то, что элементы, которые перекрывают область rect, могут быть также перерисованы.
Если элемент невидим (т.е. isVisible() возвращает false), эта функция ничего не делает.
Смотрите также paint() и boundingRect().
Это перегруженная функция.
Эта вспомогательная функция эквивалентна вызову update(QRectF(x, y, width, height)).
Обновляет микрофокус элемента.
Эта функция была введена в Qt 4.7.
Смотрите также QInputContext.
Этот обработчик события event может быть переопределён чтобы получать события колёсика мыши для этого элемента. Если вы переопределите эту функцию, event будет приниматься по умолчанию.
Если вы игнорируете событие (т.е. вызовите QEvent::ignore()) он будет передан элементу ниже этого. Если ни один элемент не принял это событие, оно игнорируется сценой и передаётся виду (т.е. вертикальной полосе прокрутке вида).
Реализация по умолчанию игнорирует это событие.
Смотрите также sceneEvent().
Возвращает окно элемента или 0, если у этого элемента нет окна. Если этот элемент является окном, он возвращает себя. В противном случае он возвращает ближайшего предка, являющегося окном.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsWidget::isWindow().
Эта вспомогательная функция эквивалентна вызову pos().x().
Эта вспомогательная функция эквивалентна вызову pos().y().
Возвращает Z-координату элемента. Z-координата влияет на порядок расположения одноранговых (соседних) элементов.
По умолчанию значение по оси Z равно 0.
Смотрите также setZValue(), Сортировка, stackBefore() и ItemStacksBehindParent.
Тип значения, возвращаемого виртуальной функцией type() в классе стандартного графического элемента в Qt. Все эти классы стандартных графических элементов в Qt связаны с уникальным значением для Type, т.е. значение, возвращаемое QGraphicsPathItem::type(), равно 2.
class QGraphicsPathItem : public QAbstractGraphicsShapeItem { public: enum { Type = 2 }; int type() const { return Type; } ... };
Минимальное разрешённое значение типа для собственного элемента (подкласс QGraphicsItem или любого стандартного элемента). Это значение используется вместе с переопределением QGraphicsItem::type() и декларированием значения перечисления Type. Пример:
class CustomItem : public QGraphicsItem { ... enum { Type = UserType + 1 }; int type() const { // Разрешает использовать qgraphicsitem_cast с этим элементом. return Type; } ... };
Замечание: UserType = 65536
Возвращает заданный item преобразованный к типу T если item является типом T; в противном случае возвращается 0.
Замечание: Чтобы заставить эту функцию работать корректно с собственными элементами, переопределите функцию type() для каждого собственного подкласса QGraphicsItem.
Эта функция была введена в Qt 4.2.
Смотрите также QGraphicsItem::type() и QGraphicsItem::UserType.
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |