Тип QML Item
Базовый визуальный тип QML Подробнее...
Свойства
- активныйФокус : bool
- активныйФокусНаВкладке : bool
-
якоря
- якоря.верх : AnchorLine
- якоря.низ : AnchorLine
- якоря.левый : AnchorLine
- якоря.правый : AnchorLine
- якоря.горизонтальныйЦентр : AnchorLine
- якоря.вертикальныйЦентр : AnchorLine
- якоря.линияБазы : AnchorLine
- якоря.заполнить : Item
- якоря.поместитьВЦентр : Item
- якоря.отступы : real
- якоря.отступСверху : real
- якоря.отступСнизу : real
- якоря.отступСлева : real
- якоря.отступСправа : real
- якоря.горизонтальныйСмещениеЦентра : real
- якоря.вертикальныйСмещениеЦентра : real
- якоря.смещениеЛинииБазы : real
- якоря.выравниваниеПриЦентрировании : bool
- сглаживание : bool
- смещениеЛинииБазы : int
- потомки : list<Item>
-
прямоугольникПотомков
- прямоугольникПотомков.x : real
- прямоугольникПотомков.y : real
- прямоугольникПотомков.ширина : real
- прямоугольникПотомков.высота : real
- обрезать : bool
- данные : list<Object>
- активировано : bool
- фокус : bool
- высота : real
- явленнаяВысота : real
- явленнаяШирина : real
- слой.эффект : Component
- слой.активировано : bool
- слой.формат : перечисление
- слой.mipmap : bool
- слой.имяОбразца : строка
- слой.сглаживание : bool
- слой.областьИсточника : прямоугольник
- слой.зеркалированиеТекстуры : перечисление
- слой.размерТекстуры : размер
- слой.режимОбёртывания : перечисление
- прозрачность : real
- родитель : Item
- ресурсы : list<Object>
- вращение : real
- масштаб : real
- плавно : bool
- состояние : строка
- состояния : list<State>
- преобразование : list<Transform>
- началоПреобразования : перечисление
- переходы : list<Transition>
- видимость : bool
- видимыеПотомки : list<Item>
- ширина : 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)
- следующийЭлементВЦепиФокуса(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. Присоединённое свойство Keys предоставляет базовые сигналы, такие как pressed и released, а также сигналы для определённых клавиш, такие как spacePressed. В примере ниже элементу назначается фокус клавиатуры и обрабатывается клавиша влево через общий onPressed обработчик и клавиша Enter через 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");
} См. присоединённое свойство Keys для подробной документации.
Зеркалирование макета
Макеты элементов могут быть зеркально отображены с помощью присоединённого свойства LayoutMirroring. Это приводит к горизонтальному изменению якорей и также приводит к тому, что элементы, которые компонуют или позиционируют своих потомков (например, ListView или Row), горизонтально изменяют направление своих макетов.
См. LayoutMirroring для получения более подробной информации.
Слои элементов
Элемент Item обычно отображается непосредственно в окне, к которому он принадлежит. Однако, установив слой.активировано, можно делегировать элемент и всё его поддерево в автономную поверхность. Затем только автономная поверхность, текстура, будет нарисована в окне.
Если необходимо иметь размер текстуры, отличный от размера элемента, это возможно с помощью слой.размерТекстуры. Чтобы отобразить только часть элемента в текстуре, используйте слой.областьИсточника. Также можно указать слой.областьИсточника так, чтобы она выходила за пределы элемента. В этом случае внешние области будут заполнены прозрачными пикселями.
Элемент будет использовать линейную интерполяцию для масштабирования, если слой.сглаживание установлено в true и будет использовать mipmap для уменьшения масштаба, если слой.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 }
} |
В сочетании с эффектами шейдера
Установление 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 имеет значение true, либо этот элемент является тем, который в данный момент получает ввод с клавиатуры, либо это предковый элемент FocusScope элемента, который в данный момент получает ввод с клавиатуры.
Обычно активный фокус приобретается путём установки focus на элементе и окружающих его объектах FocusScope. В следующем примере, объекты input и focusScope будут иметь активный фокус, а корневой прямоугольник — нет.
import QtQuick 2.0
Rectangle {
width: 100; height: 100
FocusScope {
id: focusScope
focus: true
TextInput {
id: input
focus: true
}
}
} См. также focus и Фокус клавиатуры в Qt Quick.
activeFocusOnTab : bool
Это свойство содержит значение, указывающее, хочет ли элемент быть в цепочке фокуса перехода по табуляции. По умолчанию это значение установлено в false.
Цепочка фокуса перехода по табуляции проходит по элементам, сначала посещая родителя, а затем его потомков в порядке их появления в свойстве children. Нажатие клавиши табуляции на элементе в цепочке фокуса перехода по табуляции переместит фокус клавиатуры на следующий элемент в цепочке. Нажатие клавиши BackTab (обычно Shift+Tab) переместит фокус на предыдущий элемент.
Для настройки ручной цепочки фокуса перехода по табуляции, см. KeyNavigation. События клавиши табуляции, используемые в Keys или KeyNavigation, имеют приоритет над поведением цепочки фокуса; игнорируйте события в других обработчиках клавиш, чтобы позволить им распространяться.
anchors.top : AnchorLine
Якоря предоставляют способ позиционирования элемента, задавая его отношения с другими элементами.
Поля применяются к якорям top, bottom, left, right и fill. Свойство anchors.margins может использоваться для установки всех различных полей одновременно, с одинаковым значением. Оно не переопределит конкретное поле, которое было установлено ранее; чтобы очистить явно установленное поле, установите его значение в undefined. Обратите внимание, что поля являются специфичными для якорей и не применяются, если элемент не использует якоря.
Смещения применяются для горизонтальных центров, вертикальных центров и якорей базовой линии.
Текст, привязанный к изображению, по горизонтали центрирован и расположен вертикально ниже, с полем.Item {
Image {
id: pic
// ...
}
Text {
id: label
anchors.horizontalCenter: pic.horizontalCenter
anchors.top: pic.bottom
anchors.topMargin: 5
// ...
}
} |
|
Слева от текста, привязанного к правому краю изображения, с полем. Свойство y для обоих по умолчанию равно 0.Item {
Image {
id: pic
// ...
}
Text {
id: label
anchors.left: pic.right
anchors.leftMargin: 5
// ...
}
} |
anchors.fill предоставляет удобный способ для одного элемента иметь такую же геометрию, как и другой элемент, и эквивалентно подключению всех четырёх направленных якорей.
Чтобы очистить значение якоря, установите его в undefined.
anchors.alignWhenCentered (значение по умолчанию true) заставляет центрированные якоря выравниваться по целому пикселю; если элемент, который центрируется, имеет нечётную ширину или высоту, элемент будет размещён по целому пикселю, а не по половине пикселя. Это гарантирует, что элемент будет нарисован чётко. Существуют случаи, когда это нежелательно, например, при вращении элемента могут наблюдаться подёргивания, так как центр округляется.
Примечание: Вы можете привязать элемент только к своим братьям или родителю.
Для получения дополнительной информации см. Макеты якорей.
antialiasing : bool
Используется визуальными элементами для определения того, должен ли элемент использовать сглаживание или нет. В некоторых случаях элементы с сглаживанием требуют больше памяти и потенциально медленнее отрисовываются (см. Сглаживание для получения дополнительной информации).
Значение по умолчанию — false, но может быть переопределено производными элементами.
baselineOffset : int
Указывает положение базовой линии элемента в локальных координатах.
Базовая линия элемента Text — это воображаемая линия, на которой расположен текст. Элементы управления, содержащие текст, обычно устанавливают свою базовую линию на базовую линию их текста.
Для элементов, не являющихся текстом, используется значение базового смещения по умолчанию 0.
children : list<Item>
Свойство children содержит список визуальных потомков этого элемента. Свойство resources содержит не визуальные ресурсы, которые вы хотите ссылаться по имени.
В целом не нужно ссылаться на эти свойства при добавлении дочерних элементов или ресурсов, так как свойство data по умолчанию автоматически назначит дочерние объекты свойствам children и resources по мере необходимости. Подробнее см. документацию к data.
[только для чтения] childrenRect.x : real
Это только для чтения свойство содержит коллективное положение и размер потомков элемента.
Это свойство полезно, если вам нужно получить коллективную геометрию потомков элемента, чтобы правильно установить размер элемента.
clip : bool
Это свойство содержит значение, указывающее, включено ли обрезка. Значение clip по умолчанию — false.
Если обрезка включена, элемент будет обрезать своё собственное рисование, а также рисование своих потомков, по своему прямоугольнику ограничивающей рамки.
[по умолчанию] 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.
height : real
Определяет положение и размер элемента. Значение по умолчанию — 0.
Положение (x, y) относительно родителя.
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. Эффект должен иметь свойство текстуры источника с именем, соответствующим 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.smooth : bool
Содержит значение, указывающее, производится ли плавное преобразование слоя.
См. также Слои элементов.
layer.sourceRect : прямоугольник
Это свойство определяет прямоугольную область элемента, которая должна быть отрисована в текстуре. Прямоугольник источника может быть больше самого элемента. Если прямоугольник равен null (по умолчанию), то весь элемент отрисовывается в текстуре.
См. также Слои элементов.
layer.textureMirroring : перечисление
Это свойство определяет, как должна быть отображена сгенерированная текстура OpenGL. Значение по умолчанию — ShaderEffectSource.MirrorVertically. Настраиваемое отображение может быть полезно, если сгенерированная текстура непосредственно используется пользовательскими шейдерами, такими как те, которые заданы ShaderEffect. Если для многослойного элемента не задан эффект, отображение не влияет на представление элемента в пользовательском интерфейсе.
- ShaderEffectSource.NoMirroring - Отсутствие отображения
- ShaderEffectSource.MirrorHorizontally - Сгенерированная текстура перевёрнута по оси X.
- ShaderEffectSource.MirrorVertically - Сгенерированная текстура перевёрнута по оси Y.
Это свойство QML было введено в 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 : real
Это свойство содержит непрозрачность элемента. Непрозрачность задаётся числом от 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 : real
Это свойство содержит угол поворота элемента в градусах по часовой стрелке относительно его transformOrigin.
Значение по умолчанию — 0 градусов (то есть, без поворота).
Rectangle {
color: "blue"
width: 100; height: 100
Rectangle {
color: "red"
x: 25; y: 25; width: 50; height: 50
rotation: 30
}
} |
См. также Transform и Rotation.
scale : real
Это свойство содержит коэффициент масштабирования для данного элемента.
Масштаб меньше 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 : bool
В основном используется для элементов на основе изображений, чтобы определить, следует ли использовать сглаживание или нет. Сглаживание выполняется с помощью линейной интерполяции, а отсутствие сглаживания — с помощью ближайшего соседа.
В Qt Quick 2.0 это свойство оказывает минимальное влияние на производительность.
По умолчанию это свойство установлено в true.
state : string
Это свойство содержит имя текущего состояния элемента.
Если элемент находится в своем состоянии по умолчанию, то есть не было задано явного состояния, это свойство содержит пустую строку. Аналогично, вы можете вернуть элемент в исходное состояние, установив это свойство в пустую строку.
См. также Qt Quick States.
states : list<State>
Это свойство содержит список возможных состояний для данного элемента. Чтобы изменить состояние этого элемента, установите свойство state в одно из этих состояний или установите свойство state в пустую строку, чтобы вернуть элемент в исходное состояние.
Это свойство задается как список объектов State. Например, ниже показан элемент с состояниями «red_color» и «blue_color»:
import QtQuick 2.0
Rectangle {
id: root
width: 100; height: 100
states: [
State {
name: "red_color"
PropertyChanges { target: root; color: "red" }
},
State {
name: "blue_color"
PropertyChanges { target: root; color: "blue" }
}
]
} Подробнее об использовании состояний и переходов см. в разделах Qt Quick States и Анимация и переходы в Qt Quick.
См. также переходы.
transform : list<Transform>
Это свойство содержит список преобразований, которые необходимо применить.
Дополнительную информацию см. в Transform.
transformOrigin : enumeration
Это свойство содержит точку начала, относительно которой применяются преобразования масштабирования и поворота.
Доступно девять точек начала преобразования, как показано на изображении ниже. Значение по умолчанию — Item.Center.
В этом примере изображение поворачивается вокруг нижнего правого угла.
Image {
source: "myimage.png"
transformOrigin: Item.BottomRight
rotation: 45
} Для задания произвольной точки начала преобразования используйте типы преобразований Scale или Rotation со свойством transform.
transitions : list<Transition>
Это свойство содержит список переходов для данного элемента. Они определяют переходы, которые будут применяться к элементу при изменении его состояния.
Это свойство задается как список объектов Transition. Например:
import QtQuick 2.0
Item {
transitions: [
Transition {
//...
},
Transition {
//...
}
]
} Подробнее об использовании состояний и переходов см. в разделах Qt Quick States и Анимация и переходы в Qt Quick.
См. также состояния.
visible : bool
Это свойство определяет, виден ли элемент. По умолчанию оно равно true.
Непосредственное изменение этого свойства влияет на значение visible дочерних элементов. При установке в false, значения visible всех дочерних элементов также становятся false. При установке в true, значения visible дочерних элементов возвращаются к true, если они не были явно установлены в false.
(Из-за этого поведения использование свойства visible может не иметь ожидаемого эффекта, если привязка к свойству должна реагировать только на явные изменения свойства. В таких случаях лучше использовать свойство opacity.)
Если это свойство установлено в false, элемент больше не будет получать события мыши, но продолжит получать события клавиатуры и сохранит фокус клавиатуры focus, если он был установлен. (В отличие от этого, установка свойства enabled в false останавливает события мыши и клавиатуры, а также снимает фокус с элемента.)
Примечание: значение этого свойства изменяется только при изменении этого свойства или свойства родительского элемента visible. Оно не изменяется, например, если этот элемент перемещается за пределы экрана или если значение opacity изменяется на 0.
visibleChildren : list<Item>
Это свойство только для чтения, содержащее список всех текущих видимых дочерних элементов элемента. Обратите внимание, что видимость дочернего элемента может измениться явно или потому, что изменилась видимость этого элемента (его родителя) или другого родителя.
width : real
Определяет положение и размер элемента. Значение по умолчанию — 0.
Положение (x, y) относительно родителя.
Item { x: 100; y: 100; width: 100; height: 100 } x : real
Определяет положение и размер элемента. Значение по умолчанию — 0.
Положение (x, y) относительно родителя.
Item { x: 100; y: 100; width: 100; height: 100 } y : real
Определяет положение и размер элемента. Значение по умолчанию — 0.
Положение (x, y) относительно родителя.
Item { x: 100; y: 100; width: 100; height: 100 } z : real
Устанавливает порядок следования элементов-братьев. По умолчанию порядок следования равен 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(real x, real y)
Возвращает первый видимый дочерний элемент, найденный в точке (x, y) в системе координат этого элемента.
Возвращает null, если такого элемента нет.
bool contains(point point)
Возвращает true, если этот элемент содержит point, который задан в локальных координатах; в противном случае возвращает false.
forceActiveFocus(Qt::FocusReason reason)
Это перегруженный метод.
Принудительно устанавливает активный фокус на элемент с указанным reason.
Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат focus.
Этот QML-метод был введен в Qt 5.1.
См. также activeFocus и Qt::FocusReason.
forceActiveFocus()
Принудительно устанавливает активный фокус на элемент.
Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получат focus.
Причина изменения фокуса будет Qt::OtherFocusReason. Используйте перегруженный метод для указания причины изменения фокуса, чтобы обеспечить лучшее управление изменением фокуса.
См. также activeFocus.
bool 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)); Примечание: Эта функция отобразит элемент на скрытой поверхности и скопирует эту поверхность из памяти GPU в память CPU, что может быть довольно дорогостоящим. Для «живого» предварительного просмотра используйте слои или ShaderEffectSource.
object mapFromGlobal(real x, real y)
Преобразует точку (x, y), которая находится в глобальной системе координат, в систему координат элемента и возвращает точку, соответствующую преобразованной координате.
Этот метод QML был представлен в Qt 5.7.
object mapFromItem(Item item, real x, real y, real width, real height)
Преобразует точку (x, y) или прямоугольник (x, y, width, height), который находится в системе координат item, в систему координат этого элемента и возвращает точку или прямоугольник, соответствующие преобразованной координате.
Если item имеет значение null, это преобразует точку или прямоугольник из системы координат корневого QML-представления.
object mapFromItem(Item item, real x, real y)
Преобразует точку (x, y) или прямоугольник (x, y, width, height), который находится в системе координат item, в систему координат этого элемента и возвращает точку или прямоугольник, соответствующие преобразованной координате.
Если item имеет значение null, это преобразует точку или прямоугольник из системы координат корневого QML-представления.
object mapToGlobal(real x, real y)
Преобразует точку (x, y), которая находится в системе координат этого элемента, в глобальную систему координат и возвращает точку, соответствующую преобразованной координате.
Этот метод QML был представлен в Qt 5.7.
object mapToItem(Item item, real x, real y, real width, real height)
Преобразует точку (x, y) или прямоугольник (x, y, width, height), который находится в системе координат этого элемента, в систему координат item и возвращает точку или прямоугольник, соответствующие преобразованной координате.
Если item имеет значение null, это преобразует точку или прямоугольник в систему координат корневого QML-представления.
object mapToItem(Item item, real x, real y)
Преобразует точку (x, y) или прямоугольник (x, y, width, height), который находится в системе координат этого элемента, в систему координат item и возвращает точку или прямоугольник, соответствующие преобразованной координате.
Если item имеет значение null, это преобразует точку или прямоугольник в систему координат корневого QML-представления.
nextItemInFocusChain(bool forward)
Возвращает элемент в цепочке фокусировки, который находится рядом с этим элементом. Если forward равно true, или не указано, это следующий элемент в прямом направлении. Если forward равно false, это следующий элемент в обратном направлении.
Этот метод QML был представлен в Qt 5.1.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qml-qtquick-item.html