Spec-Zone.ru › Qt 5.11

Тип QML Item

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

Заявление импорта: import QtQuick 2.11
Создаёт: 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 : перечисление
  • layer.mipmap : bool
  • layer.samplerName : строка
  • layer.samples : перечисление
  • layer.smooth : bool
  • layer.sourceRect : прямоугольник
  • layer.textureMirroring : перечисление
  • layer.textureSize : размер
  • layer.wrapMode : перечисление
  • opacity : real
  • parent : Item
  • resources : list<Object>
  • rotation : real
  • scale : real
  • smooth : bool
  • state : строка
  • states : list<State>
  • transform : list<Transform>
  • transformOrigin : перечисление
  • transitions : list<Transition>
  • visible : bool
  • visibleChildren : list<Item>
  • width : real
  • x : real
  • y : real
  • z : real

Методы

  • childAt(real x, real y)
  • bool contains(point point)
  • forceActiveFocus(Qt::FocusReason reason)
  • forceActiveFocus()
  • bool grabToImage(callback, targetSize)
  • object mapFromGlobal(real x, real y)
  • object mapFromItem(Item item, real x, real y, real width, real height)
  • object mapFromItem(Item item, real x, real y)
  • object mapToGlobal(real x, real y)
  • object mapToItem(Item item, real x, real y, real width, real height)
  • object mapToItem(Item item, real x, real y)
  • nextItemInFocusChain(bool 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"
    }
}

Обработка нажатий клавиш

Обработка клавиш доступна для всех визуальных типов, основанных на элементах, через свойство Ключи прикреплённого свойства. Свойство Keys прикрепленного свойства предоставляет базовые сигналы, такие как нажатие и отпускание, а также сигналы для определённых клавиш, такие как 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 и будет использовать mipmap для уменьшения размера, если layer.mipmap установлено в true. Мип-мапинг может улучшить качество изображения уменьшенных элементов. Для мип-мапинга отдельных элементов 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 }
}

Совмещение с эффектами Shader

Установка 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 иногда выгодно кэшировать сложный контент в pixmap, image или текстуре. В Qt Quick, благодаря методам, уже применённым рендером графа сцены, это в большинстве случаев не нужно. Избыточные вызовы рисования уже сокращены благодаря обработке потоков и кэш в большинстве случаев будет смешивать больше пикселей, чем исходный контент. Накладные расходы на отображение на внеэкранном дисплее и смешивание, связанные с отрисовкой получившейся текстуры, часто оказываются дороже, чем просто позволить элементу и его дочерним элементам отображаться обычно.

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

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

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

activeFocus : bool

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

Если activeFocus истинно, то либо этот элемент в данный момент получает ввод с клавиатуры, либо это предок 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

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

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

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

anchors.top : AnchorLine

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

Отступы применяются к верхним, нижним, левым, правым и заполняющим якорям. Свойство 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) принудительно выравнивает центрированные якоря к целому пикселю; если у центрируемого элемента нечётное значение width или height, элемент будет расположен на целых пикселях, а не на половине пикселя. Это обеспечивает чёткое отображение элемента. В некоторых случаях это нежелательно, например, при вращении элемента могут быть заметны рывки, так как центр будет округлён.

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

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

antialiasing : bool

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

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

baselineOffset : int

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

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

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

children : list<Item>

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

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

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

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

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

clip : bool

Это свойство указывает, включено ли обрезание. Значение по умолчанию для clip — 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 позволяет свободно смешивать визуальные дочерние элементы и ресурсы в элементе. Если вы назначите визуальный элемент в список данных, он станет дочерним элементом, а если вы назначите любой другой тип объекта, он будет добавлен как ресурс.

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

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.

height : real

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

Положение (x, y) относительно родителя parent.

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

implicitHeight : real

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

Неявный размер большинства элементов по умолчанию равен 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 и явное задание ширины приводит к снижению производительности, так как текст должен быть отформатирован дважды.

implicitWidth : real

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

Неявный размер большинства элементов по умолчанию равен 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 и явное задание ширины приводит к снижению производительности, так как текст должен быть отформатирован дважды.

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, для текстуры генерируются mipmap.

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

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

layer.samplerName : string

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

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

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

layer.samples : enumeration

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

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

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

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

Примечание: Это свойство функционально только при наличии поддержки многообразных renderbuffers и операций blit в буфере кадров. В противном случае значение игнорируется.

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

layer.smooth : bool

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

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

layer.sourceRect : rect

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

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

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

Это свойство определяет, как должна быть зеркально отображена сгенерированная текстура 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.

resources : список<Объект>

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

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

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

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

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

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

См. также Преобразование и Поворот.

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
    }
}

См. также Преобразование и Масштабирование.

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

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

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

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

state : строка

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

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

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

states : список<Состояние>

Это свойство содержит список возможных состояний для этого элемента. Для изменения состояния этого элемента установите свойство 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 : список<Преобразование>

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

Для получения дополнительной информации см. Преобразование.

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

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

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

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

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

Для установки произвольной точки начала преобразования используйте типы преобразований Масштабирование или Поворот со свойством transform.

transitions : список<Переход>

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

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

import QtQuick 2.0

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

См. Состояния в Qt Quick и Анимация и переходы в Qt Quick для получения более подробной информации об использовании состояний и переходов.

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

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

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

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

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

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

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

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

visibleChildren : список<Item>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

То же 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
        }
    }
}

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

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

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

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

логическое contains(точка point)

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

forceActiveFocus(Qt::FocusReason reason)

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

Принудительно устанавливает активный фокус на элементе с указанным значением reason.

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

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

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

forceActiveFocus()

Принудительно устанавливает активный фокус на элементе.

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

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

См. также activeFocus.

логическое grabToImage(callback, targetSize)

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

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

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

Если захват не может быть инициирован, функция возвращает 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), находящуюся в глобальной системе координат, в систему координат элемента и возвращает точку point, соответствующую преобразованной координате.

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

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

объект mapFromItem(Item item, вещественное x, вещественное y, вещественное width, вещественное height)

объект mapFromItem(Item item, вещественное x, вещественное y)

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

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

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

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

объект mapToItem(Item item, вещественное x, вещественное y, вещественное width, вещественное height)

объект mapToItem(Item item, вещественное x, вещественное y)

nextItemInFocusChain(логическое forward)

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

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

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

Spec-Zone.ru

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