Spec-Zone.ru › Qt 5.13

Тип Item QML

Базовый визуальный тип QML. Подробнее...

Оператор импорта: import QtQuick 2.13
Создает экземпляры: QQuickItem
Наследует:

QtObject

Наследуется:

AnimatedSprite, BorderImage, Canvas, Column, ColumnLayout, Flickable, Flipable, Flow, FocusScope, Grid, GridLayout, Image, Loader, MouseArea, MultiPointTouchArea, ParticlePainter, PathView, PinchArea, Rectangle, Repeater, Row, RowLayout, ShaderEffect, ShaderEffectSource, Shape, SignalSpy, SpriteSequence, StackLayout, TestCase, Text, TextEdit, и TextInput

  • Список всех членов, включая унаследованные члены

Свойства

  • activeFocus : bool
  • activeFocusOnTab : bool
  • anchors
    • anchors.top : AnchorLine
    • anchors.bottom : AnchorLine
    • anchors.left : AnchorLine
    • anchors.right : AnchorLine
    • anchors.horizontalCenter : AnchorLine
    • anchors.verticalCenter : AnchorLine
    • anchors.baseline : AnchorLine
    • anchors.fill : Item
    • anchors.centerIn : Item
    • anchors.margins : real
    • anchors.topMargin : real
    • anchors.bottomMargin : real
    • anchors.leftMargin : real
    • anchors.rightMargin : real
    • anchors.horizontalCenterOffset : real
    • anchors.verticalCenterOffset : real
    • anchors.baselineOffset : real
    • anchors.alignWhenCentered : bool
  • antialiasing : bool
  • baselineOffset : int
  • children : list<Item>
  • childrenRect
    • childrenRect.x : real
    • childrenRect.y : real
    • childrenRect.width : real
    • childrenRect.height : real
  • clip : bool
  • containmentMask : QObject*
  • data : list<Object>
  • enabled : bool
  • focus : bool
  • height : real
  • implicitHeight : real
  • implicitWidth : real
  • layer.effect : Component
  • layer.enabled : bool
  • layer.format : enumeration
  • layer.mipmap : bool
  • layer.samplerName : string
  • layer.samples : enumeration
  • layer.smooth : bool
  • layer.sourceRect : rect
  • layer.textureMirroring : enumeration
  • layer.textureSize : size
  • layer.wrapMode : enumeration
  • opacity : real
  • parent : Item
  • resources : list<Object>
  • rotation : real
  • scale : real
  • smooth : bool
  • state : string
  • states : list<State>
  • transform : list<Transform>
  • transformOrigin : enumeration
  • transitions : list<Transition>
  • visible : bool
  • visibleChildren : list<Item>
  • width : real
  • x : real
  • y : real
  • z : real

Методы

  • childAt(x, real y)
  • bool contains(point)
  • forceActiveFocus(reason)
  • forceActiveFocus()
  • bool grabToImage(callback, targetSize)
  • object mapFromGlobal(x, real y)
  • object mapFromItem(item, real x, real y, real width, real height)
  • object mapFromItem(item, real x, real y)
  • object mapToGlobal(x, real y)
  • object mapToItem(item, real x, real y, real width, real height)
  • object mapToItem(item, real x, real y)
  • nextItemInFocusChain(forward)

Подробное описание

Тип Item является базовым типом для всех визуальных элементов в Qt Quick.

Все визуальные элементы в Qt Quick наследуются от Item. Хотя объект Item не имеет визуального отображения, он определяет все атрибуты, общие для визуальных элементов, такие как положение x и y, ширина и высота, поддержка якорей и обработки клавиш.

Тип Item может быть полезен для группировки нескольких элементов под одним корневым визуальным элементом. Например:

import QtQuick 2.0

Item {
    Image {
        source: "tile.png"
    }
    Image {
        x: 80
        width: 100
        height: 100
        source: "tile.png"
    }
    Image {
        x: 190
        width: 100
        height: 100
        fillMode: Image.Tile
        source: "tile.png"
    }
}

Обработка клавиш

Обработка клавиш доступна всем визуальным типам, основанным на элементах, через присоединенное свойство Ключи. Присоединенное свойство Ключи предоставляет базовые сигналы, такие как pressed и released, а также сигналы для определённых клавиш, такие как spacePressed. В примере ниже задаётся фокус клавиатуры элементу и обрабатывается левая клавиша с помощью общего обработчика onPressed, а клавиша возврата с помощью обработчика onReturnPressed.

import QtQuick 2.0

Item {
    focus: true
    Keys.onPressed: {
        if (event.key == Qt.Key_Left) {
            console.log("move left");
            event.accepted = true;
        }
    }
    Keys.onReturnPressed: console.log("Pressed return");
}

Подробная документация приведена в присоединенном свойстве Ключи.

Зеркальное отображение макета

Макеты элементов можно отображать зеркально с помощью присоединённого свойства LayoutMirroring. Это приводит к горизонтальному обратному отображению якорей, а также к обратному отображению направления макета для элементов, которые выстраивают или позиционируют свои дочерние элементы (например, ListView или Row).

Дополнительные сведения см. в разделе LayoutMirroring.

Слои элементов

Элемент Item обычно отображается непосредственно в окне, к которому он принадлежит. Однако, установив layer.enabled, можно делегировать элемент и весь его поддерево на внеэкранную поверхность. Затем только внеэкранная поверхность, текстура, будет отображена в окне.

Если необходимо, чтобы размер текстуры отличался от размера элемента, это возможно с помощью layer.textureSize. Чтобы отобразить только часть элемента на текстуру, используйте layer.sourceRect. Также можно указать layer.sourceRect так, чтобы он выходил за пределы элемента. В этом случае внешний вид будет заполнен прозрачными пикселями.

Элемент будет использовать линейную интерполяцию для масштабирования, если layer.smooth установлено в true, и будет использовать MIP-мапинг для уменьшения масштаба, если layer.mipmap установлено в true. MIP-мапинг может улучшить качество изображения уменьшенных элементов. Для MIP-мапирования отдельных элементов Image используйте свойство Image::mipmap.

Непрозрачность слоя против непрозрачности элемента

При применении непрозрачности к иерархии элементов непрозрачность применяется к каждому элементу индивидуально. Это может привести к нежелательным визуальным результатам, когда непрозрачность применяется к поддереву. Рассмотрим следующий пример:

Непрозрачность без слоёв
Item {
    id: nonLayered

    opacity: 0.5

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

Слой отображается с непрозрачностью корневого элемента, равной 1, а затем непрозрачность корневого элемента применяется к текстуре при её отображении. Это означает, что плавное изменение непрозрачности большой иерархии элементов от прозрачного к непрозрачному или наоборот можно выполнить без артефактов перекрытия, которые характерны для обычного смешивания альфа-каналов по элементам. Вот тот же пример со включенным слоем:

Непрозрачность со слоями
Item {
    id: layered

    opacity: 0.5

    layer.enabled: true

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

В сочетании с ShaderEffects

Установление layer.enabled в значение true преобразует элемент в поставщик текстур, что позволяет использовать элемент непосредственно в качестве текстуры, например, в сочетании с типом ShaderEffect.

Применить эффект к слою во время выполнения можно с помощью layer.effect:

Item {
    id: layerRoot
    layer.enabled: true
    layer.effect: ShaderEffect {
        fragmentShader: "
            uniform lowp sampler2D source; // this item
            uniform lowp float qt_Opacity; // inherited opacity of this item
            varying highp vec2 qt_TexCoord0;
            void main() {
                lowp vec4 p = texture2D(source, qt_TexCoord0);
                lowp float g = dot(p.xyz, vec3(0.344, 0.5, 0.156));
                gl_FragColor = vec4(g, g, g, p.a) * qt_Opacity;
            }"
    }

В этом примере мы реализуем эффект шейдера вручную. Модуль Qt Graphical Effects содержит набор готовых эффектов для использования с Qt Quick.

Дополнительная информация о работе с эффектами содержится в разделе ShaderEffect.

Примечание: layer.enabled на самом деле просто более удобный способ использования ShaderEffectSource.

Память и производительность

Когда слой элемента включен, граф сцены выделит в видеопамяти объём, равный width x height x 4. В конфигурациях с ограниченной памятью следует с осторожностью использовать большие слои.

В мире QPainter / QWidget иногда предпочтительно кэшировать сложный контент в пиксельной карте, изображении или текстуре. В Qt Quick, благодаря уже применённым методам рендерера графа сцены, это в большинстве случаев не требуется. Избыточные вызовы рисования уже сокращаются благодаря объединению, и кэш в большинстве случаев будет смешивать больше пикселей, чем исходный контент. Поэтому накладные расходы на рендеринг на внеэкранную область и смешивание с отображением полученной текстуры часто оказываются более затратными, чем просто нормальное отображение элемента и его дочерних элементов.

Кроме того, элемент, использующий слой, не может быть объединён при рендеринге. Это означает, что сцена с большим количеством слоистых элементов может иметь проблемы с производительностью.

Использование слоёв может быть удобным и полезным для визуальных эффектов, но в большинстве случаев его следует включать только на время действия эффекта и выключать после.

Документация свойств

implicitWidth : real

Определяет естественную ширину или высоту элемента, если не указаны ширина или высота.

По умолчанию неявный размер большинства элементов равен 0x0, однако некоторые элементы имеют неявный размер, который нельзя переопределить, например, Image и Text.

Указание неявного размера полезно для определения компонентов, которые имеют предпочтительный размер на основе их содержимого, например:

// Label.qml
import QtQuick 2.0

Item {
    property alias icon: image.source
    property alias label: text.text
    implicitWidth: text.implicitWidth + image.implicitWidth
    implicitHeight: Math.max(text.implicitHeight, image.implicitHeight)
    Image { id: image }
    Text {
        id: text
        wrapMode: Text.Wrap
        anchors.left: image.right; anchors.right: parent.right
        anchors.verticalCenter: parent.verticalCenter
    }
}

Примечание: Использование implicitWidth для Text или TextEdit и явное задание ширины влечёт за собой снижение производительности, так как текст должен быть разложен дважды.

x : real

Определяет положение и размер элемента. Значение по умолчанию — 0.

Положение (x, y) относится к родительскому элементу.

Item { x: 100; y: 100; width: 100; height: 100 }

children : list<Item>

Свойство children содержит список визуальных дочерних элементов этого элемента. Свойство resources содержит невизуальные ресурсы, которые вы хотите ссылаться по имени.

В целом нет необходимости ссылаться на эти свойства при добавлении дочерних элементов или ресурсов, так как свойство data по умолчанию автоматически назначит дочерние объекты свойствам children и resources соответственно. Подробности см. в документации к свойству data.

activeFocus : bool

Это только для чтения свойство, указывающее, имеет ли элемент активный фокус.

Если activeFocus равно true, то либо этот элемент является тем, который в настоящее время получает ввод с клавиатуры, либо он является предком FocusScope элемента, который в настоящее время получает ввод с клавиатуры.

Обычно активный фокус приобретается путём задания focus на элементе и его окружающих объектах FocusScope. В следующем примере объекты input и focusScope будут иметь активный фокус, в то время как корневой прямоугольный объект — нет.

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: focusScope
        focus: true

        TextInput {
            id: input
            focus: true
        }
    }
}

См. также focus и Фокус клавиатуры в Qt Quick.

activeFocusOnTab : bool

Это свойство определяет, требуется ли элементу находиться в цепочке фокуса табуляции. По умолчанию оно установлено в false.

Цепочка фокуса табуляции проходит по элементам, сначала посещая родителя, а затем его дочерние элементы в порядке их появления в свойстве children. Нажатие клавиши табуляции на элементе в цепочке фокуса табуляции переместит фокус клавиатуры на следующий элемент в цепочке. Нажатие клавиши BackTab (обычно Shift+Tab) переместит фокус на предыдущий элемент.

Для настройки ручной цепочки фокуса табуляции см. KeyNavigation. События клавиши Tab, используемые Keys или KeyNavigation, имеют приоритет над поведением цепочки фокуса; игнорируйте события в других обработчиках клавиш, чтобы позволить им распространяться.

anchors.top : AnchorLine

Якоря обеспечивают способ позиционирования элемента путём указания его отношения к другим элементам.

Отступы применяются к якорям top, bottom, left, right и fill. Свойство anchors.margins можно использовать для установки всех различных отступов сразу, с одинаковым значением. Оно не переопределит конкретный отступ, который был задан ранее; чтобы очистить явный отступ, установите его значение в undefined. Обратите внимание, что отступы специфичны для якоря и не применяются, если элемент не использует якоря.

Смещения применяются для якорей горизонтального и вертикального центров и базовой линии.

Текст, закреплённый к изображению, по горизонтали центрирован и расположен ниже него, с отступом.
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.horizontalCenter: pic.horizontalCenter
        anchors.top: pic.bottom
        anchors.topMargin: 5
        // ...
    }
}

Слева от текста, закреплённого справа от изображения, с отступом. Свойство y для обоих по умолчанию равно 0.
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.left: pic.right
        anchors.leftMargin: 5
        // ...
    }
}

anchors.fill обеспечивает удобный способ для одного элемента иметь такую же геометрию, как и у другого элемента, и эквивалентен соединению всех четырёх направленных якорей.

Чтобы очистить значение якоря, установите его в undefined.

anchors.alignWhenCentered (по умолчанию true) принудительно выравнивает центрированные якоря по целому пикселю; если у центрируемого элемента нечётная ширина или высота, элемент будет расположен на целом пикселе, а не на полупикселе. Это гарантирует чёткое отображение элемента. В некоторых случаях это нежелательно, например, при вращении элемента могут быть заметны рывки из-за округления центра.

Примечание: Вы можете привязать элемент только к другим элементам или родительскому элементу.

Для получения дополнительной информации см. Макеты с якорями.

antialiasing : bool

Используется визуальными элементами для определения, нужно ли использовать сглаживание или нет. В некоторых случаях элементы со сглаживанием требуют больше памяти и, возможно, медленнее отрисовываются (см. Сглаживание для получения более подробной информации).

По умолчанию значение равно false, но может быть переопределено производными элементами.

baselineOffset : int

Задает положение базовой линии элемента в локальных координатах.

Базовая линия элемента Text — воображаемая линия, на которой располагается текст. Элементы управления, содержащие текст, обычно устанавливают свою базовую линию на базовую линию своего текста.

Для элементов, не являющихся текстом, используется значение смещения базовой линии по умолчанию 0.

[только для чтения] childrenRect.x : real

Это свойство только для чтения содержит коллективное положение и размер дочерних элементов элемента.

Это свойство полезно, если вам нужно получить коллективную геометрию дочерних элементов элемента, чтобы правильно определить размер элемента.

clip : bool

Это свойство указывает, включено ли обрезка. Значение обрезки по умолчанию — false.

Если обрезка включена, элемент обрезает свою собственную отрисовку, а также отрисовку своих дочерних элементов, по своему ограничительной прямоугольнику.

containmentMask : QObject*

Это свойство содержит необязательную маску для элемента, которая используется в методе QtQuick::Item::contains. Основное применение метода QtQuick::Item::contains — на данный момент определить, попало ли событие ввода в элемент или нет.

По умолчанию метод contains возвращает true для любой точки внутри ограничительной рамки элемента. containmentMask позволяет более тонко управлять этим. Например, разработчик может определить и использовать элемент AnotherItem в качестве containmentMask, у которого есть специализированный метод contains, например:

Item { id: item; containmentMask: AnotherItem { id: anotherItem } }

Метод contains элемента item вернет true только если реализация метода contains элемента anotherItem возвращает true.

Это свойство было введено в Qt 5.11.

[по умолчанию] data : list<Object>

Свойство data позволяет свободно смешивать визуальные дочерние элементы и ресурсы в элементе. Если вы присваиваете визуальный элемент списку data, он становится дочерним элементом, а если вы присваиваете любой другой тип объекта, он добавляется в качестве ресурса.

Таким образом, вы можете написать:

Item {
    Text {}
    Rectangle {}
    Timer {}
}

вместо:

Item {
    children: [
        Text {},
        Rectangle {}
    ]
    resources: [
        Timer {}
    ]
}

В целом, не должно быть необходимости обращаться к свойству data, так как это свойство по умолчанию для Item, и все дочерние элементы автоматически назначаются этому свойству.

enabled : bool

Это свойство указывает, получает ли элемент события мыши и клавиатуры. По умолчанию значение равно true.

Прямое изменение этого свойства влияет на значение enabled дочерних элементов. При установке в false, значения enabled всех дочерних элементов также становятся false. При установке в true, значения enabled дочерних элементов возвращаются к true, если они не были явно установлены в false.

Установка этого свойства в false автоматически приводит к установке activeFocus в false, и этот элемент больше не будет получать события клавиатуры.

См. также visible.

focus : bool

Это свойство указывает, имеет ли элемент фокус внутри окружающего FocusScope. Если true, этот элемент получит активный фокус, когда окружающий FocusScope получит активный фокус.

В следующем примере input получит активный фокус, когда scope получит активный фокус:

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: scope

        TextInput {
            id: input
            focus: true
        }
    }
}

Для целей этого свойства вся сцена предполагается действующей как область фокусировки. Практически это означает, что следующий QML отдаст активный фокус элементу input при запуске.

Rectangle {
    width: 100; height: 100

    TextInput {
          id: input
          focus: true
    }
}

См. также activeFocus и Фокус клавиатуры в Qt Quick.

layer.effect : Component

Содержит эффект, применяемый к этому слою.

Эффект обычно представляет собой компонент ShaderEffect, хотя может быть назначен любой компонент Item. Эффект должен иметь свойство sourceTexture с именем, соответствующим layer.samplerName.

См. также layer.samplerName и Слои элементов.

layer.enabled : bool

Указывает, используется ли для элемента многослойная отрисовка. Многослойная отрисовка по умолчанию отключена.

Многослойный элемент отрисовывается на отдельной поверхности и кешируется до изменения. Включение многослойной отрисовки для сложных иерархий QML элементов иногда может быть оптимизацией.

Ни одно из других свойств слоя не имеет эффекта, когда слой отключен.

См. также Слои элементов.

layer.format : enumeration

Это свойство определяет внутренний формат OpenGL текстуры. Изменение этого свойства имеет смысл, когда также указан layer.effect. В зависимости от реализации OpenGL это свойство может позволить сохранить некоторую память текстуры.

  • ShaderEffectSource.Alpha - GL_ALPHA;
  • ShaderEffectSource.RGB - GL_RGB
  • ShaderEffectSource.RGBA - GL_RGBA

Примечание: ShaderEffectSource.RGB и ShaderEffectSource.Alpha следует использовать с осторожностью, так как поддержка этих форматов в базовом оборудовании и драйвере часто отсутствует.

См. также Слои элементов.

layer.mipmap : bool

Если это свойство равно true, для текстуры генерируются mip-уровни.

Примечание: Некоторые реализации OpenGL ES 2 не поддерживают mip-уровни для текстур, не являющихся степенями двойки.

См. также Слои элементов.

layer.samplerName : string

Содержит имя свойства sourceTexture эффекта.

Это значение должно совпадать с именем свойства sourceTexture эффекта, чтобы элемент мог правильно передать поверхностный слой элемента в эффект.

См. также layer.effect, ShaderEffect и Слои элементов.

layer.samples : enumeration

Это свойство позволяет запросить многообразную отрисовку в слое.

По умолчанию многообразная отрисовка включена, когда многообразная отрисовка включена для всего окна, предполагая, что используемый рендерер сцены и базовая графическая API поддерживают это.

Установка значения в 2, 4 и т.д. позволяет запросить многообразную отрисовку для части сцены без включения многообразной отрисовки для всей сцены. Таким образом, многообразная отрисовка применяется только к заданному поддереву, что может привести к значительному приросту производительности, поскольку многообразная отрисовка не применяется к другим частям сцены.

Примечание: Включение многообразной отрисовки может быть потенциально дорогостоящим независимо от размера слоя, так как это влечёт за собой зависимые от оборудования и драйвера затраты на производительность и память.

Примечание: Это свойство функционально только тогда, когда поддерживаются multisample renderbuffers и framebuffer blits. В противном случае значение игнорируется.

Это свойство было введено в Qt 5.10.

layer.smooth : bool

Указывает, будет ли слой плавно преобразован.

См. также Слои элементов.

layer.sourceRect : rect

Это свойство определяет прямоугольную область элемента, которая должна быть отрисована в текстуру. Прямоугольник источника может быть больше, чем сам элемент. Если прямоугольник равен null, что является значением по умолчанию, то весь элемент отрисовывается в текстуру.

См. также Слои элементов.

layer.textureMirroring : enumeration

Это свойство определяет, как должна быть зеркально отображена сгенерированная текстура OpenGL. Значение по умолчанию — ShaderEffectSource.MirrorVertically. Пользовательское зеркалирование может быть полезно, если сгенерированная текстура напрямую используется пользовательскими шейдерами, такими как те, которые заданы в ShaderEffect. Если для слоёв элемента не задано никакого эффекта, зеркалирование не влияет на отображение элемента в пользовательском интерфейсе.

  • ShaderEffectSource.NoMirroring - Без зеркалирования
  • ShaderEffectSource.MirrorHorizontally - Сгенерированная текстура отражается относительно оси X.
  • ShaderEffectSource.MirrorVertically - Сгенерированная текстура отражается относительно оси Y.

Это свойство было введено в Qt 5.6.

layer.textureSize : размер

Это свойство содержит запрашиваемый размер текстуры слоя в пикселях. Если оно пустое (по умолчанию), используется размер элемента.

Примечание: Некоторые платформы имеют ограничение на минимальный размер буферов кадра, что означает, что фактический размер текстуры может быть больше, чем запрашиваемый размер.

См. также Слои элементов.

layer.wrapMode : перечисление

Это свойство определяет режимы обёртывания OpenGL, связанные с текстурой. Изменение этого свойства имеет смысл, когда задан layer.effect.

  • ShaderEffectSource.ClampToEdge - GL_CLAMP_TO_EDGE как по горизонтали, так и по вертикали
  • ShaderEffectSource.RepeatHorizontally - GL_REPEAT по горизонтали, GL_CLAMP_TO_EDGE по вертикали
  • ShaderEffectSource.RepeatVertically - GL_CLAMP_TO_EDGE по горизонтали, GL_REPEAT по вертикали
  • ShaderEffectSource.Repeat - GL_REPEAT как по горизонтали, так и по вертикали

Примечание: Некоторые реализации OpenGL ES 2 не поддерживают режим обёртывания GL_REPEAT для текстур, не являющихся степенями двойки.

См. также Слои элементов.

opacity : вещественное

Это свойство содержит непрозрачность элемента. Непрозрачность задаётся числом от 0.0 (полностью прозрачный) до 1.0 (полностью непрозрачный). Значение по умолчанию — 1.0.

При установке этого свойства указанная непрозрачность также применяется индивидуально к дочерним элементам. В некоторых случаях это может привести к непредвиденному результату. Например, на втором наборе прямоугольников ниже красный прямоугольник имеет непрозрачность 0.5, которая влияет на непрозрачность его синего дочернего прямоугольника, даже если дочерний элемент не задал непрозрачность.

Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Item {
    Rectangle {
        opacity: 0.5
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Изменение непрозрачности элемента не влияет на получение им событий пользовательского ввода. (В отличие от установки свойства visible в false, что останавливает события мыши, и установки свойства enabled в false, что останавливает события мыши и клавиатуры, а также снимает активный фокус с элемента.)

См. также visible.

parent : Item

Это свойство содержит визуального родителя элемента.

Примечание: Понятие визуального родителя отличается от понятия родителя QObject. Визуальный родитель элемента может не совпадать с его родителем по объекту. Подробнее см. Концепции - Визуальный родитель в Qt Quick.

rotation : вещественное

Это свойство содержит угол поворота элемента в градусах по часовой стрелке вокруг transformOrigin.

Значение по умолчанию — 0 градусов (т. е. без поворота).

Rectangle {
    color: "blue"
    width: 100; height: 100
    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        rotation: 30
    }
}

См. также Transform и Rotation.

scale : вещественное

Это свойство содержит коэффициент масштабирования для этого элемента.

Масштаб меньше 1.0 приводит к отображению элемента в меньшем размере, а масштаб больше 1.0 — в большем размере. Отрицательный масштаб приводит к отражению элемента при отображении.

Значение по умолчанию — 1.0.

Масштабирование применяется от transformOrigin.

import QtQuick 2.0

Rectangle {
    color: "blue"
    width: 100; height: 100

    Rectangle {
        color: "green"
        width: 25; height: 25
    }

    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        scale: 1.4
    }
}

См. также Transform и Scale.

smooth : логическое

В основном используется в элементах на основе изображений, чтобы определить, следует ли использовать плавную выборку или нет. Плавная выборка выполняется с использованием линейной интерполяции, а неплавная — с использованием ближайшего соседа.

В Qt Quick 2.0 это свойство минимально влияет на производительность.

По умолчанию это свойство установлено в true.

state : строка

Это свойство содержит имя текущего состояния элемента.

Если элемент находится в своём состоянии по умолчанию, то есть не было явно установлено состояния, то это свойство содержит пустую строку. Аналогично, вы можете вернуть элемент в состояние по умолчанию, установив это свойство в пустую строку.

См. также Состояния Qt Quick.

states : список<State>

Это свойство содержит список возможных состояний для этого элемента. Чтобы изменить состояние этого элемента, установите свойство state на одно из этих состояний или установите свойство state в пустую строку, чтобы вернуть элемент в исходное состояние.

Это свойство задаётся как список объектов State. Например, ниже приведён элемент с состояниями "red_color" и "blue_color":

import QtQuick 2.0

Rectangle {
    id: root
    width: 100; height: 100

    states: [
        State {
            name: "red_color"
            PropertyChanges { target: root; color: "red" }
        },
        State {
            name: "blue_color"
            PropertyChanges { target: root; color: "blue" }
        }
    ]
}

Подробнее о работе с состояниями и переходами см. Состояния Qt Quick и Анимация и переходы в Qt Quick.

См. также переходы.

transform : список<Transform>

Это свойство содержит список преобразований, которые нужно применить.

Дополнительную информацию см. в Transform.

transformOrigin : перечисление

Это свойство содержит точку начала, вокруг которой применяются преобразования масштабирования и поворота.

Доступно девять точек начала преобразования, как показано на рисунке ниже. По умолчанию точка начала преобразования — Item.Center.

В этом примере изображение поворачивается вокруг нижнего правого угла.

Image {
    source: "myimage.png"
    transformOrigin: Item.BottomRight
    rotation: 45
}

Чтобы установить произвольную точку начала преобразования, используйте типы преобразований Scale или Rotation со свойством transform.

transitions : список<Transition>

Это свойство содержит список переходов для данного элемента. Они определяют переходы, которые будут применяться к элементу всякий раз, когда он изменяет своё состояние.

Это свойство задаётся как список объектов Transition. Например:

import QtQuick 2.0

Item {
    transitions: [
        Transition {
            //...
        },
        Transition {
            //...
        }
    ]
}

Подробнее о работе с состояниями и переходами см. Состояния Qt Quick и Анимация и переходы в Qt Quick.

См. также состояния.

visible : логическое

Это свойство определяет, виден ли элемент. По умолчанию оно истинно.

Прямая установка этого свойства влияет на свойство visible дочерних элементов. При установке в значение false, свойство visible всех дочерних элементов также становится false. При установке в true, свойство visible дочерних элементов возвращается к true, если они явно не были установлены в false.

(Из-за этого поведения использование свойства visible может не иметь ожидаемого эффекта, если привязка свойств должна реагировать только на явные изменения свойств. В таких случаях лучше использовать свойство opacity.)

Если это свойство установлено в false, элемент больше не будет получать события мыши, но продолжит получать события клавиатуры и сохранит фокус клавиатуры focus, если он был установлен. (В отличие от установки свойства enabled в false, что останавливает как события мыши, так и клавиатуры, а также снимает фокус с элемента.)

Примечание: Значение этого свойства изменяется только при изменении этого свойства или свойства родителя visible. Оно не меняется, например, если этот элемент выходит за пределы экрана или если свойство opacity меняется на 0.

См. также opacity и enabled.

END_OF_DOCUMENT_MARKER

visibleChildren : список<Элемент>

Это свойство только для чтения, перечисляющее всех видимых в данный момент дочерних элементов. Обратите внимание, что видимость дочернего элемента может измениться явно или из-за изменения видимости этого (родительского) элемента или другого предка.

z : вещественный

Устанавливает порядок отображения элементов-братьев. По умолчанию порядок отображения равен 0.

Элементы с более высоким значением z выводятся поверх элементов с меньшим значением z. Элементы с одинаковым значением z выводятся снизу вверх в порядке их появления. Элементы с отрицательным значением z выводятся под содержимым родительского элемента.

Следующий пример демонстрирует различные эффекты порядка отображения.

Одинаковый z — более поздние дети сверху ранних детей:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

Более высокий z сверху:
Item {
    Rectangle {
        z: 1
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

Одинаковый z — дети над родителями:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Более низкий z снизу:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            z: -1
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Документация по методам

объект mapToItem(элемент, вещественный x, вещественный y)

Преобразует точку (x, y) или прямоугольник (x, y, ширина, высота), заданные в системе координат этого элемента, в систему координат элемента элемент и возвращает точку или прямоугольник, соответствующие преобразованным координатам.

При преобразовании используются следующие свойства элемента: x, y, масштаб, вращение, точка_привязки_преобразования и преобразование.

Если элемент имеет значение null, это преобразует точку или прямоугольник в систему координат корневого QML-представления.

объект mapFromItem(элемент, вещественный x, вещественный y)

Преобразует точку (x, y) или прямоугольник (x, y, ширина, высота), заданные в системе координат элемента элемент, в систему координат этого элемента и возвращает точку или прямоугольник, соответствующие преобразованным координатам.

При преобразовании используются следующие свойства элемента: x, y, масштаб, вращение, точка_привязки_преобразования и преобразование.

Если элемент имеет значение null, это преобразует точку или прямоугольник из системы координат корневого QML-представления.

childAt(x, вещественный y)

Возвращает первый видимый дочерний элемент, найденный в точке (x, y) в системе координат этого элемента.

Возвращает null , если такого элемента нет.

булево contains(точка)

Возвращает true, если этот элемент содержит точку, которая задана в локальных координатах; в противном случае возвращает false.

forceActiveFocus(причина)

Это перегруженный метод.

Вынужденно устанавливает фокус на элемент с заданной причиной.

Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат фокус.

Этот метод был представлен в Qt 5.1.

См. также activeFocus и Qt::FocusReason.

forceActiveFocus()

Вынужденно устанавливает фокус на элемент.

Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат фокус.

Причина изменения фокуса будет Qt::OtherFocusReason. Используйте перегруженный метод, чтобы указать причину изменения фокуса для лучшей обработки этого изменения.

См. также activeFocus.

булево grabToImage(обработчик, размер_цели)

Создаёт изображение элемента в оперативной памяти.

Обработка выполняется асинхронно, и JavaScript-функция обработчик вызывается по завершении обработки. Обработчик принимает один аргумент, который является результатом операции захвата; объект ItemGrabResult.

Используйте размер_цели для указания размера целевого изображения. По умолчанию результат будет иметь такой же размер, как и элемент.

Если запуск захвата невозможен, функция возвращает false.

Следующий фрагмент демонстрирует захват элемента и сохранение результата в файл.

Rectangle {
    id: source
    width: 100
    height: 100
    gradient: Gradient {
        GradientStop { position: 0; color: "steelblue" }
        GradientStop { position: 1; color: "black" }
    }
}
    // ...
    source.grabToImage(function(result) {
                           result.saveToFile("something.png");
                       });

Следующий фрагмент демонстрирует захват элемента и использование результата в другом элементе изображения.

Image {
    id: image
}
    // ...
    source.grabToImage(function(result) {
                           image.source = result.url;
                       },
                       Qt.size(50, 50));

Примечание: Эта функция отобразит элемент на скрытой поверхности и скопирует эту поверхность из памяти графического процессора в память центрального процессора, что может быть довольно затратно. Для «живого» предварительного просмотра используйте слои или ShaderEffectSource.

объект mapFromGlobal(x, вещественный y)

Преобразует точку (x, y), заданную в глобальной системе координат, в систему координат элемента и возвращает точку, соответствующую преобразованной координате.

При преобразовании используются следующие свойства элемента: x, y, масштаб, вращение, точка_привязки_преобразования и преобразование.

Этот метод был представлен в Qt 5.7.

объект mapToGlobal(x, вещественный y)

Преобразует точку (x, y), заданную в системе координат этого элемента, в глобальную систему координат и возвращает точку, соответствующую преобразованной координате.

При преобразовании используются следующие свойства элемента: x, y, масштаб, вращение, точка_привязки_преобразования и преобразование.

Этот метод был представлен в Qt 5.7.

nextItemInFocusChain(вперед)

Возвращает элемент в цепочке фокуса, следующий за этим элементом. Если вперед равно true, или не указано, это следующий элемент в прямом направлении. Если вперед равно false, это следующий элемент в обратном направлении.

Этот метод был представлен в Qt 5.1.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-qtquick-item.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API