Тип QML Item
Базовый визуальный тип QML. Подробнее...
| Заявление импорта: | import QtQuick 2.11 |
| Создаёт: | QQuickItem |
| Наследует: | |
| Наследуется от: | 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 содержит список визуальных дочерних элементов этого элемента. Свойство 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.
Это свойство содержит список возможных состояний для этого элемента. Для изменения состояния этого элемента установите свойство 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.
Это свойство содержит список переходов для этого элемента. Они определяют переходы, которые будут применены к элементу всякий раз, когда он изменяет своё 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.
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