Тип Item QML
Базовый визуальный тип QML. Подробнее...
| Оператор импорта: | import QtQuick 2.14 |
| Создает экземпляры: | 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, SpriteSequence, StackLayout, Text, TextEdit, и TextInput |
Свойства
- activeFocus : bool
- activeFocusOnTab : bool
-
anchors
- anchors.alignWhenCentered : bool
- anchors.baseline : AnchorLine
- anchors.baselineOffset : real
- anchors.bottom : AnchorLine
- anchors.bottomMargin : real
- anchors.centerIn : Item
- anchors.fill : Item
- anchors.horizontalCenter : AnchorLine
- anchors.horizontalCenterOffset : real
- anchors.left : AnchorLine
- anchors.leftMargin : real
- anchors.margins : real
- anchors.right : AnchorLine
- anchors.rightMargin : real
- anchors.top : AnchorLine
- anchors.topMargin : real
- anchors.verticalCenter : AnchorLine
- anchors.verticalCenterOffset : real
- antialiasing : bool
- baselineOffset : int
- children : list<Item>
-
childrenRect
- childrenRect.height : real
- childrenRect.width : real
- childrenRect.x : real
- childrenRect.y : 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"
}
} Обработка клавиш
Обработка клавиш доступна для всех визуальных типов на основе элементов через присоединенное свойство Клавиши. Присоединенное свойство Клавиши предоставляет базовые сигналы, такие как нажатие и отпускание, а также сигналы для определенных клавиш, такие как пробел. В примере ниже устанавливается фокус клавиатуры на элемент и обрабатывается левая клавиша с помощью общего обработчика 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. Mipmapping может улучшить качество визуализации уменьшенных элементов. Для mipmapping отдельных элементов 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, изображение или текстуру. В Qt Quick из-за уже примененных техник, используемых рендерером графа сцены scene graph renderer, это, как правило, не требуется. Избыточные вызовы отрисовки уже уменьшены благодаря пакетной обработке, и кеш в большинстве случаев будет смешивать больше пикселей, чем исходный контент. Накладные расходы на отрисовку на внеэкранную область и смешивание с отрисовкой полученной текстуры часто оказываются более затратными, чем просто обычная отрисовка элемента и его дочерних элементов.
Кроме того, элемент, использующий слой, не может быть объединён во время отрисовки. Это означает, что сцена с множеством слоистых элементов может иметь проблемы с производительностью.
Использование слоев может быть удобным и полезным для визуальных эффектов, но в большинстве случаев его следует включать только на время действия эффекта и отключать после.
Документация по свойствам
implicitHeight : вещественный
Определяет естественную ширину или высоту элемента, если не указаны ширина или высота.
По умолчанию неявный размер большинства элементов равен 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 и явное задание ширины влечёт за собой снижение производительности, так как текст должен быть отформатирован дважды.
height : вещественный
Определяет положение и размер элемента. Значение по умолчанию равно 0.
Положение (x,y) относительно родителя.
Item { x: 100; y: 100; width: 100; height: 100 } Свойство children содержит список визуальных дочерних элементов этого элемента. Свойство resources содержит невизуальные ресурсы, которые вы хотите ссылаться по имени.
В целом, нет необходимости ссылаться на эти свойства при добавлении дочерних элементов или ресурсов, поскольку свойство по умолчанию data автоматически назначит дочерние объекты свойствам children и resources соответственно. Подробности см. в документации к свойству data.
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 : булево
Это свойство указывает, хочет ли элемент быть в цепочке фокуса по табуляции. По умолчанию это установлено в false.
Цепочка фокуса по табуляции проходит по элементам, сначала посещая родительский элемент, а затем дочерние элементы в том порядке, в котором они встречаются в свойстве children. Нажатие клавиши Tab на элементе в цепочке фокуса по табуляции переместит фокус клавиатуры на следующий элемент в цепочке. Нажатие клавиши BackTab (обычно Shift+Tab) переместит фокус на предыдущий элемент.
Для настройки цепочки фокуса по табуляции вручную, см. KeyNavigation. События клавиши Tab, используемые Keys или KeyNavigation, имеют приоритет над поведением цепочки фокуса; игнорируйте события в других обработчиках клавиш, чтобы позволить им распространяться.
anchors.alignWhenCentered : булево
Якоря предоставляют способ позиционирования элемента, задавая его отношения с другими элементами.
Отступы применяются к якорям top, bottom, left, right и fill. Свойство anchors.margins может быть использовано для одновременной установки всех различных отступов в одно и то же значение. Оно не переопределит конкретный отступ, который был ранее задан; чтобы очистить явный отступ, установите его значение в undefined. Обратите внимание, что отступы специфичны для якорей и не применяются, если элемент не использует якоря.
Смещения применяются к горизонтальным, вертикальным центрам и якорям baseline.
Текст, привязанный к изображению, горизонтально центрированный и вертикально расположенный ниже, с отступом.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.height : 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. Эффект должен иметь свойство source texture с именем, соответствующим layer.samplerName.
См. также layer.samplerName и Слои элементов.
layer.enabled : bool
Указывает, является ли элемент слоистым. Слоирование по умолчанию отключено.
Слоистый элемент рендерится на внеэкранную поверхность и кэшируется до изменения. Включение слоирования для сложных иерархий QML элементов может иногда быть оптимизацией.
Ни одно из других свойств слоя не имеет никакого эффекта, когда слой отключен.
См. также Слои элементов.
layer.format : перечисление
Это свойство определяет внутренний формат 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 : строка
Содержит имя свойства текстуры источника эффекта.
Это значение должно соответствовать имени свойства текстуры источника эффекта, чтобы элемент мог правильно передать внеэкранную поверхность слоя эффекту.
См. также layer.effect, ShaderEffect и Слои элементов.
layer.samples : перечисление
Это свойство позволяет запросить многократную выборку в слое.
По умолчанию многократная выборка включена, когда многократная выборка включена для всего окна, предполагая, что используемый рендерер графического сцены и базовая графическая API поддерживают это.
Установив значение в 2, 4 и т. д., многократная выборка может быть запрошена для части сцены без включения многократной выборки для всей сцены. Таким образом, многократная выборка применяется только к заданному поддереву, что может привести к существенному повышению производительности, так как многократная выборка не применяется к другим частям сцены.
Примечание: Включение многократной выборки может быть потенциально дорогостоящим независимо от размера слоя, поскольку это влечёт за собой зависимые от оборудования и драйвера затраты на производительность и память.
Примечание: Это свойство функционально только при наличии поддержки многократной выборки renderbuffers и фреймбуферных блинков. В противном случае значение игнорируется.
Это свойство было добавлено в Qt 5.10.
layer.smooth : bool
Указывает, трансформируется ли слой плавно. При включении, выборка текстуры слоя выполняется с помощью интерполяции linear, в то время как отсутствие плавного режима приводит к использованию режима фильтрации nearest.
По умолчанию это свойство установлено в false.
См. также Слои элементов.
layer.sourceRect : прямоугольник
Это свойство определяет прямоугольную область элемента, которая должна быть отрисована в текстуре. Прямоугольник источника может быть больше самого элемента. Если прямоугольник равен 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.
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
transformOrigin: Item.TopLeft
}
} |
См. также Преобразование и Масштабирование.
smooth : логический
В основном используется для элементов на основе изображений, чтобы определить, следует ли использовать плавную выборку или нет. Плавная выборка выполняется с использованием линейной интерполяции, а неплавная — с использованием ближайшего соседа.
В Qt Quick 2.0 это свойство минимально влияет на производительность.
По умолчанию это свойство установлено в true.
state : строка
Это свойство содержит имя текущего состояния элемента.
Если элемент находится в своем состоянии по умолчанию, то есть явное состояние не было установлено, то это свойство содержит пустую строку. Аналогично, вы можете вернуть элемент в состояние по умолчанию, установив это свойство в пустую строку.
См. также Состояния Qt Quick.
Это свойство содержит список возможных состояний для этого элемента. Для изменения состояния этого элемента установите свойство 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 : список<Преобразование>
Это свойство содержит список преобразований для применения.
Дополнительную информацию см. в Преобразование.
transformOrigin : перечисление
Это свойство содержит точку начала, относительно которой применяются преобразования масштабирования и поворота.
Доступно девять точек начала преобразования, как показано на изображении ниже. Точка начала преобразования по умолчанию — Item.Center.
В этом примере изображение поворачивается вокруг нижнего правого угла.
Image {
source: "myimage.png"
transformOrigin: Item.BottomRight
rotation: 45
} Чтобы установить произвольную точку начала преобразования, используйте типы преобразований Scale или Rotation со свойством transform.
Это свойство содержит список переходов для этого элемента. Они определяют переходы, которые будут применяться к элементу всякий раз, когда изменяется его state.
Это свойство задается как список объектов Transition. Например:
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 : список<Элемент>
Это свойство только для чтения, которое перечисляет всех видимых в данный момент дочерних элементов. Обратите внимание, что видимость дочернего элемента может измениться явно или потому, что изменилась видимость этого (родительского) элемента или другого предка.
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.14/qml-qtquick-item.html