Тип QML Item
Базовый визуальный тип QML. Подробнее...
| Заявление об импорте: | import QtQuick 2.15 |
| Создает: | 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(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, rect r)
- object mapFromItem(Item item, real x, real y, real width, real height)
- object mapFromItem(Item item, real x, real y)
- object mapFromItem(Item item, point p)
- object mapToGlobal(real x, real y)
- object mapToItem(Item item, rect r)
- object mapToItem(Item item, real x, real y, real width, real height)
- object mapToItem(Item item, real x, real y)
- object mapToItem(Item item, point p)
- 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"
}
} Обработка клавиш
Обработка клавиш доступна для всех визуальных типов, основанных на Item, через свойство Keys attached property. Свойство attached property Keys предоставляет базовые сигналы, такие как pressed и released, а также сигналы для определённых клавиш, такие как spacePressed. На примере ниже задаётся фокус клавиатуры для элемента и обрабатывается левая клавиша через общий onPressed обработчик, а клавиша ввода через onReturnPressed обработчик:
import QtQuick 2.0
Item {
focus: true
Keys.onPressed: {
if (event.key == Qt.Key_Left) {
console.log("move left");
event.accepted = true;
}
}
Keys.onReturnPressed: console.log("Pressed return");
} См. подробную документацию по свойству attached property Keys.
Зеркалирование макета
Макеты элементов можно зеркалить, используя свойство attached property LayoutMirroring. Это приводит к горизонтальному изменению привязок и также приводит к тому, что элементы, которые выстраивают или позиционируют своих детей (такие как ListView или Row), изменяют направление своих макетов на горизонтальное.
См. LayoutMirroring для получения более подробной информации.
Слои элементов
Элемент Item обычно отображается непосредственно в окне, к которому он принадлежит. Однако, установив layer.enabled, можно делегировать элемент и весь его поддерево на внеэкранную поверхность. Затем только внеэкранная поверхность, текстура, будет нарисована в окне.
Если требуется размер текстуры, отличный от размера элемента, это возможно с помощью layer.textureSize. Чтобы отобразить только часть элемента в текстуре, используйте layer.sourceRect. Также можно указать layer.sourceRect так, чтобы он выходил за пределы элемента. В этом случае внешняя область будет заполнена прозрачными пикселями.
Элемент будет использовать линейную интерполяцию при масштабировании, если layer.smooth установлено в true и будет использовать mipmap для уменьшения масштаба, если layer.mipmap установлено в true. Mipmap может улучшить визуальное качество уменьшенных элементов. Для mipmap одиночных элементов Image предпочтительнее использовать Image::mipmap.
Непрозрачность слоя против непрозрачности элемента
При применении непрозрачности к иерархии элементов, непрозрачность применяется к каждому элементу индивидуально. Это может привести к нежелательным визуальным результатам, когда непрозрачность применяется к поддереву. Рассмотрим следующий пример:
Неслойная непрозрачностьItem {
id: nonLayered
opacity: 0.5
width: 100
height: 100
Rectangle { width: 80; height: 80; border.width: 1 }
Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
} |
Слой отображается с непрозрачностью корневого элемента, равной 1, а затем к текстуре применяется непрозрачность корневого элемента при ее отображении. Это означает, что затухание большой иерархии элементов от прозрачного к непрозрачному или наоборот может выполняться без артефактов перекрытия, которые возникают при обычном смешивании альфа-каналов элементов по одному. Вот тот же пример со включенным слоем:
Слоистая непрозрачностьItem {
id: layered
opacity: 0.5
layer.enabled: true
width: 100
height: 100
Rectangle { width: 80; height: 80; border.width: 1 }
Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
} |
Использование вместе с ShaderEffects
Установка layer.enabled в значение true превратит элемент в поставщик текстур, что позволит использовать элемент непосредственно в качестве текстуры, например, в сочетании с типом ShaderEffect.
Можно применить эффект к слою во время выполнения, используя layer.effect:
Item {
id: layerRoot
layer.enabled: true
layer.effect: ShaderEffect {
fragmentShader: "
uniform lowp sampler2D source; // this item
uniform lowp float qt_Opacity; // inherited opacity of this item
varying highp vec2 qt_TexCoord0;
void main() {
lowp vec4 p = texture2D(source, qt_TexCoord0);
lowp float g = dot(p.xyz, vec3(0.344, 0.5, 0.156));
gl_FragColor = vec4(g, g, g, p.a) * qt_Opacity;
}"
} В этом примере мы реализуем эффект шейдера вручную. Модуль Qt Graphical Effects содержит набор готовых эффектов для использования с Qt Quick.
См. ShaderEffect для получения дополнительной информации об использовании эффектов.
Примечание: layer.enabled — это просто более удобный способ использования ShaderEffectSource.
Память и производительность
Когда слой элемента включен, графический движок выделяет память в GPU, равную width x height x 4. В конфигурациях с ограниченной памятью следует с осторожностью использовать большие слои.
В мире QPainter / QWidget иногда выгодно кэшировать сложный контент в pixmap, изображении или текстуре. В Qt Quick из-за уже примененных техник рендером графического движка в большинстве случаев этого не требуется. Избыточные вызовы рисования уже сокращаются за счёт объединения и кэш в большинстве случаев будет смешивать больше пикселей, чем исходный контент. Поэтому накладные расходы на отрисовку на внеэкранной поверхности и смешивание, связанные с отрисовкой полученной текстуры, часто более дороги, чем просто отображение элемента и его потомков обычным способом.
Кроме того, элемент, использующий слой, не может быть объединён во время отрисовки. Это означает, что сцена с многими слоистыми элементами может иметь проблемы с производительностью.
Использование слоёв может быть удобным и полезным для визуальных эффектов, но в большинстве случаев оно должно быть включено на время эффекта и отключено после него.
Документация по свойствам
implicitHeight : real
Определяет естественную высоту элемента, если не указаны ширина или высота.
По умолчанию неявный размер большинства элементов — 0x0, однако некоторые элементы имеют неявный размер, который нельзя переопределить, например, Image и Text.
Настройка неявного размера полезна для определения компонентов, которые имеют предпочтительный размер на основе их содержимого, например:
// Label.qml
import QtQuick 2.0
Item {
property alias icon: image.source
property alias label: text.text
implicitWidth: text.implicitWidth + image.implicitWidth
implicitHeight: Math.max(text.implicitHeight, image.implicitHeight)
Image { id: image }
Text {
id: text
wrapMode: Text.Wrap
anchors.left: image.right; anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
} Примечание: Использование implicitWidth для Text или TextEdit и явное задание ширины влечёт за собой штраф по производительности, поскольку текст должен быть разложен дважды.
height : real
Определяет положение и размер элемента. Значение по умолчанию — 0.
Положение (x, y) относительно родителя.
Item { x: 100; y: 100; width: 100; height: 100 } Свойство children содержит список визуальных дочерних элементов этого элемента. Свойство resources содержит невизуальные ресурсы, которые вы хотите ссылаться по имени.
В целом, не нужно ссылаться на эти свойства при добавлении дочерних элементов или ресурсов, так как по умолчанию свойство data автоматически назначит дочерние объекты свойствам children и resources по мере необходимости. См. документацию по свойству data для получения подробной информации.
activeFocus : bool
Это свойство только для чтения, которое указывает, имеет ли элемент активный фокус.
Если activeFocus равно true, либо этот элемент — тот, который в настоящее время получает ввод с клавиатуры, либо он является предком FocusScope элемента, который в настоящее время получает ввод с клавиатуры.
Обычно активный фокус получает элемент путём задания focus для элемента и его окружающих объектов FocusScope. В следующем примере объекты input и focusScope будут иметь активный фокус, а корневой прямоугольный объект — нет.
import QtQuick 2.0
Rectangle {
width: 100; height: 100
FocusScope {
id: focusScope
focus: true
TextInput {
id: input
focus: true
}
}
} См. также focus и Фокус клавиатуры в Qt Quick.
activeFocusOnTab : bool
Это свойство указывает, хочет ли элемент находиться в цепочке фокуса Tab. По умолчанию оно установлено в false.
Цепочка фокуса Tab проходит по элементам, сначала посещая родителя, а затем его детей в порядке их появления в свойстве children. Нажатие клавиши Tab на элементе в цепочке фокуса Tab переместит фокус клавиатуры на следующий элемент в цепочке. Нажатие BackTab (обычно Shift+Tab) переместит фокус на предыдущий элемент.
Для настройки цепочки фокуса Tab вручную см. KeyNavigation. События клавиши Tab, используемые Keys или KeyNavigation, имеют приоритет перед поведением цепочки фокуса; игнорируйте события в других обработчиках клавиш, чтобы позволить им распространяться.
anchors.alignWhenCentered : bool
Привязки предоставляют способ позиционирования элемента, задавая его отношения с другими элементами.
Отступы применяются к привязка top, bottom, left, right и fill. Свойство anchors.margins можно использовать для установки всех отступов сразу с одинаковым значением. Оно не переопределит конкретный отступ, который был установлен ранее; чтобы очистить явный отступ, установите его значение в undefined. Обратите внимание, что отступы специфичны для привязки и не применяются, если элемент не использует привязки.
Смещения применяются для горизонтального центра, вертикального центра и привязок по основанию.
Текст, привязанный к изображению, по горизонтали центрирован и вертикально ниже, с отступом.Item {
Image {
id: pic
// ...
}
Text {
id: label
anchors.horizontalCenter: pic.horizontalCenter
anchors.top: pic.bottom
anchors.topMargin: 5
// ...
}
} |
|
Слева от текста, привязанного к правому краю изображения, с отступом. Свойство y для обоих по умолчанию равно 0.Item {
Image {
id: pic
// ...
}
Text {
id: label
anchors.left: pic.right
anchors.leftMargin: 5
// ...
}
} |
anchors.fill предоставляет удобный способ задать одному элементу такую же геометрию, как у другого элемента, и эквивалентен соединению всех четырех направленных якорей.
Для очистки значения якоря установите его в undefined.
anchors.alignWhenCentered (по умолчанию true) заставляет центрированные якоря выравниваться по целому пикселю; если элемент, который центрируется, имеет нечетную ширину или высоту, элемент будет позиционирован по целому пикселю, а не по половинному пикселю. Это гарантирует четкое отображение элемента. В некоторых случаях это нежелательно, например, при вращении элемента могут быть заметны рывки, поскольку центр округляется.
Примечание: Вы можете привязать элемент только к соседним элементам или к родительскому элементу.
Дополнительную информацию см. в Размещение с помощью якорей.
antialiasing : bool
Используется визуальными элементами для определения, должен ли элемент использовать сглаживание или нет. В некоторых случаях элементы с сглаживанием требуют больше памяти и потенциально медленнее рендерятся (подробнее см. Сглаживание).
По умолчанию значение false, но может быть переопределено производными элементами.
baselineOffset : int
Указывает положение базовой линии элемента в локальных координатах.
Базовая линия элемента Text — это воображаемая линия, на которой размещается текст. Элементы управления, содержащие текст, обычно устанавливают свою базовую линию на базовую линию своего текста.
Для элементов, не являющихся текстовыми, используется значение смещения базовой линии по умолчанию 0.
[только для чтения] childrenRect.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 } } Метод содержит элемента 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, генерируются mipmap для текстуры.
Примечание: Некоторые реализации OpenGL ES 2 не поддерживают mipmap для текстур, которые не являются степенью двойки.
См. также Слои элементов.
layer.samplerName : string
Содержит имя свойства source texture эффекта.
Это значение должно соответствовать имени свойства source texture эффекта, чтобы элемент мог правильно передать область отрисовки слоя эффекту.
См. также layer.effect, ShaderEffect, и Слои элементов.
layer.samples : перечисление
Это свойство позволяет запросить многообразную отрисовку в слое.
По умолчанию многообразная отрисовка включена, когда многообразная отрисовка включена для всего окна, предполагая, что используемый рендерер графической сцены и используемый графический API поддерживают это.
Устанавливая значение в 2, 4 и т. д., можно запросить многообразную отрисовку для части сцены без включения многообразной отрисовки для всей сцены. Таким образом, многообразная отрисовка применяется только к заданному поддереву, что может привести к значительному повышению производительности, так как многообразная отрисовка не применяется к другим частям сцены.
Примечание: Включение многообразной отрисовки может быть потенциально дорогостоящим независимо от размера слоя, так как влечёт за собой зависимые от оборудования и драйвера затраты производительности и памяти.
Примечание: Это свойство функционально только тогда, когда поддерживаются многообразные renderbuffer и фреймбуферные блинты. В противном случае значение игнорируется.
Это свойство было добавлено в Qt 5.10.
layer.smooth : bool
Содержит значение, определяющее, выполняется ли преобразование слоя плавно. При включении выборка текстуры слоя выполняется с использованием интерполяции linear, в то время как отсутствие сглаживания приводит к использованию режима фильтрации nearest.
По умолчанию это свойство установлено в false.
См. также Слои элементов.
layer.sourceRect : rect
Это свойство определяет прямоугольную область элемента, которая должна быть отображена в текстуре. Прямоугольник источника может быть больше, чем сам элемент. Если прямоугольник равен null, что является значением по умолчанию, то весь элемент отображается в текстуре.
См. также Слои элементов.
END_OF_DOCUMENT_MARKERlayer.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.
Это свойство содержит список переходов для этого элемента. Они определяют переходы, которые будут применяться к элементу всякий раз, когда он изменяет своё состояние.
Это свойство задается как список объектов 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, элемент больше не будет получать события мыши, но продолжит получать события клавиатуры и сохранит клавиатурный фокус, если он был установлен. (В отличие от этого, установка свойства enabled в false останавливает как события мыши, так и клавиатуры, а также снимает фокус с элемента.)
Примечание: Значение этого свойства изменяется только при изменении этого свойства или свойства родителя visible. Оно не изменяется, например, если этот элемент выходит за пределы экрана или если непрозрачность opacity изменяется на 0.
visibleChildren : список<Элемент>
Это только для чтения свойство перечисляет всех дочерних элементов текущего элемента, которые в настоящее время видимы. Обратите внимание, что видимость дочернего элемента может измениться явно или из-за изменения видимости этого (его родительского) элемента или другого родительского элемента.
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
}
}
} |
Документация по методам
Преобразует точку (x, y) или прямоугольник (x, y, ширина, высота), которые находятся в системе координат данного элемента, в систему координат item и возвращает точку или прямоугольник, соответствующие преобразованным координатам.
В преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, transformOrigin и преобразование.
Если item имеет значение null, это преобразует точку или прямоугольник в систему координат корневого QML-представления.
Версии, принимающие точку и прямоугольник, доступны начиная с Qt 5.15.
Преобразует точку (x, y) или прямоугольник (x, y, ширина, высота), которые находятся в системе координат item, в систему координат данного элемента и возвращает точку или прямоугольник, соответствующие преобразованным координатам.
В преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, transformOrigin и преобразование.
Если item имеет значение null, это преобразует точку или прямоугольник из системы координат корневого QML-представления.
Версии, принимающие точку и прямоугольник, доступны начиная с Qt 5.15.
childAt(вещественное x, вещественное y)
Возвращает первый видимый дочерний элемент, найденный в точке (x, y) в системе координат данного элемента.
Возвращает null, если такого элемента нет.
логическое contains(точка point)
Возвращает true, если этот элемент содержит point, который находится в локальных координатах; в противном случае возвращает false.
forceActiveFocus(Qt::FocusReason reason)
Это перегруженный метод.
Принудительно устанавливает активный фокус на элемент с заданным reason.
Этот метод устанавливает фокус на элемент и гарантирует, что всем предковым объектам FocusScope в иерархии объектов также будет присвоен фокус focus.
Этот метод был представлен в Qt 5.1.
См. также activeFocus и Qt::FocusReason.
forceActiveFocus()
Принудительно устанавливает активный фокус на элемент.
Этот метод устанавливает фокус на элемент и гарантирует, что всем предковым объектам FocusScope в иерархии объектов также будет присвоен фокус focus.
Причина изменения фокуса будет 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), которая находится в глобальной системе координат, в систему координат элемента и возвращает точку, соответствующую преобразованной координате.
В преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, transformOrigin и преобразование.
Этот метод был представлен в Qt 5.7.
объект mapToGlobal(вещественное x, вещественное y)
Преобразует точку (x, y), которая находится в системе координат данного элемента, в глобальную систему координат и возвращает точку, соответствующую преобразованной координате.
В преобразовании используются следующие свойства элемента: x, y, масштаб, поворот, transformOrigin и преобразование.
Этот метод был представлен в Qt 5.7.
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/qt-5.15/qml-qtquick-item.html