Тип QML Item
Базовый визуальный тип QML. Подробнее...
| Заявление об импорте: | import QtQuick |
| Инициализирует: | QQuickItem |
| Наследуется от: | |
| Наследуется для: | AnimatedSprite, BorderImage, Canvas, Column, ColumnLayout, DropArea, 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 : список<Item>
-
childrenRect
- childrenRect.height : real
- childrenRect.width : real
- childrenRect.x : real
- childrenRect.y : real
...
Методы
- childAt(real x, real y)
- bool содержит(point point)
- forceActiveFocus(Qt::FocusReason reason)
- forceActiveFocus()
- bool grabToImage(callback, targetSize)
- point mapFromGlobal(real x, real y)
- rect mapFromItem(Item item, rect r)
- rect mapFromItem(Item item, real x, real y, real width, real height)
- point mapFromItem(Item item, real x, real y)
- point mapFromItem(Item item, point p)
- point mapToGlobal(real x, real y)
- rect mapToItem(Item item, rect r)
- rect mapToItem(Item item, real x, real y, real width, real height)
- point mapToItem(Item item, real x, real y)
- point 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"
}
} Обработка событий
Все визуальные типы на основе элементов могут использовать Обработчики ввода для обработки входящих событий ввода (подклассы QInputEvent), таких как события мыши, касания и нажатия клавиш. Это предпочтительный декларативный способ обработки событий.
Альтернативный способ обработки событий касания — это наследование от QQuickItem, вызов setAcceptTouchEvents() в конструкторе и переопределение touchEvent(). Примите всё событие, чтобы остановить передачу его элементам ниже и захватить все точки касания события. Используйте QPointerEvent::setExclusiveGrabber(), чтобы захватить только определённые точки касания и позволить событию передаваться дальше.
Аналогично, подкласс QQuickItem может вызвать setAcceptedMouseButtons() для регистрации на получение событий нажатия кнопок мыши, setAcceptHoverEvents() для получения событий наведения (движения мыши, пока не нажата никакая кнопка) и переопределить виртуальные функции mousePressEvent(), mouseMoveEvent() и mouseReleaseEvent(). Они также могут принять событие, чтобы предотвратить дальнейшую передачу и получить неявный захват одновременно; или явно захватить отдельную QEventPoint, которую несёт QMouseEvent.
Обработка нажатий клавиш доступна для всех визуальных типов на основе элементов через свойство Клавиши. Свойство присоединённого объекта Клавиши предоставляет базовые сигналы, такие как pressed и released, а также сигналы для конкретных клавиш, таких как spacePressed. В примере ниже элементу назначается фокус клавиатуры и обрабатывается левая клавиша через общий onPressed обработчик, а клавиша возврата — через onReturnPressed обработчик:
import QtQuick 2.0
Item {
focus: true
Keys.onPressed: (event)=> {
if (event.key == Qt.Key_Left) {
console.log("move left");
event.accepted = true;
}
}
Keys.onReturnPressed: console.log("Pressed return");
} Подробная документация по свойству Клавиши находится здесь.
Отражение макета
Макеты элементов могут быть отражены с помощью присоединённого свойства LayoutMirroring. Это приводит к горизонтальному отражению якорей и к отражению направления макетов элементов, которые размещают или позиционируют свои дочерние элементы (например, ListView или Row).
Дополнительные сведения см. в разделе LayoutMirroring.
Слои элементов
Элемент обычно отображается непосредственно в окне, к которому он принадлежит. Однако, установив layer.enabled, можно делегировать элемент и весь его поддерево на экран вне окна. Затем только поверхность вне окна, текстура, будет отображена в окне.
Если требуется размер текстуры, отличный от размера элемента, это возможно с помощью layer.textureSize. Чтобы отобразить только часть элемента в текстуре, используйте layer.sourceRect. Также можно указать layer.sourceRect так, чтобы он выходил за пределы элемента. В этом случае внешний край будет заполнен прозрачными пикселями.
Элемент будет использовать линейную интерполяцию при масштабировании, если layer.smooth установлено в true, и будет использовать мип-мапинг для уменьшения масштаба, если layer.mipmap установлено в true. Мип-мапинг может улучшить качество отображения уменьшенных элементов. Для мип-мапинга отдельных элементов Image предпочтительнее использовать Image::mipmap.
Прозрачность слоя против прозрачности элемента
При применении прозрачности к иерархии элементов прозрачность применяется к каждому элементу индивидуально. Это может привести к нежелательным визуальным результатам, когда прозрачность применяется к поддереву. Рассмотрим следующий пример:
Прозрачность без слоевItem {
id: nonLayered
opacity: 0.5
width: 100
height: 100
Rectangle { width: 80; height: 80; border.width: 1 }
Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
} |
Слой отрисовывается с прозрачностью корневого элемента, равной 1, а затем прозрачность корневого элемента применяется к текстуре при её отображении. Это означает, что плавное изменение непрозрачности большой иерархии элементов от прозрачного к непрозрачному, или наоборот, может быть выполнено без артефактов перекрытия, которые имеются при обычном смешивании альфа-каналов по элементам. Вот тот же пример со включённым слоем:
Прозрачность со слоямиItem {
id: layered
opacity: 0.5
layer.enabled: true
width: 100
height: 100
Rectangle { width: 80; height: 80; border.width: 1 }
Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
} |
В сочетании с эффектами Shader
Установка layer.enabled в значение true преобразует элемент в поставщика текстуры, что позволяет использовать элемент непосредственно в качестве текстуры, например, в сочетании с типом ShaderEffect.
Возможно применение эффекта к слою во время выполнения с помощью layer.effect:
Item {
id: layerRoot
layer.enabled = true
layer.effect: ShaderEffect {
fragmentShader: "effect.frag.qsb"
}
} Дополнительную информацию об использовании эффектов см. в разделе ShaderEffect.
Примечание: layer.enabled фактически просто более удобный способ использования ShaderEffectSource.
Память и производительность
Когда слой элемента включён, графический сценарий выделяет память в графическом процессоре, равную width x height x 4. В конфигурациях с ограниченной памятью следует с осторожностью использовать слои большого размера.
В мире QPainter / QWidget иногда бывает целесообразно кэшировать сложное содержимое в растровом изображении, картинке или текстуре. В Qt Quick из-за уже применённых техник рендерером графического сценария это в большинстве случаев не нужно. Избыточные вызовы рисования уже сокращены благодаря кэшированию, и в большинстве случаев кэш окажется более затратным в плане смешивания пикселей, чем исходное содержимое. Поэтому накладные расходы на рендеринг на экран вне окна и смешивание с результатом текстуры часто оказываются дороже, чем просто разрешить отобразить элемент и его потомков в обычном режиме.
Также, элемент, использующий слой, не может быть группирован во время рендеринга. Это означает, что сцена с большим количеством элементов со слоями может иметь проблемы с производительностью.
Наложение может быть удобным и полезным для визуальных эффектов, но в большинстве случаев следует включать его только на время эффекта и отключать после.
Документация по свойствам
implicitHeight : real
Определяет предпочтительную ширину или высоту элемента.
Если width или height не указаны, эффективный размер элемента будет определяться его implicitWidth или implicitHeight.
Однако, если элемент является потомком макета, макет определит предпочтительный размер элемента, используя его неявный размер. В такой ситуации явные 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 и явное указание ширины приводит к потере производительности, так как текст должен быть выведен дважды.
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 на элементе в цепочке фокуса переместит фокус клавиатуры на следующий элемент в цепочке. Нажатие BackTab (обычно Shift+Tab) переместит фокус на предыдущий элемент.
Для настройки цепочки фокуса клавиши Tab вручную см. KeyNavigation. События клавиши Tab, используемые объектами Keys или KeyNavigation, имеют приоритет над поведением цепочки фокуса; игнорируйте события в других обработчиках клавиш, чтобы позволить им распространяться.
anchors.alignWhenCentered : bool
Якоря предоставляют способ позиционирования элемента, задавая его отношение к другим элементам.
Отступы применяются к верхнему, нижнему, левому, правому и заполняющим якорям. Свойство 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
Это свойство только для чтения содержит коллективное положение и размер дочерних элементов элемента.
Это свойство полезно, если вам нужно получить коллективную геометрию дочерних элементов элемента, чтобы правильно установить размер элемента.
Возвращаемая геометрия локальна для элемента. Например:
Item {
x: 50
y: 100
// prints: QRectF(-10, -20, 30, 40)
Component.onCompleted: print(childrenRect)
Item {
x: -10
y: -20
width: 30
height: 40
}
} clip : bool
Это свойство содержит значение, указывающее, включена ли обрезка. Значение обрезки по умолчанию равно false.
Если обрезка включена, элемент будет обрезать свою собственную отрисовку, а также отрисовку своих дочерних элементов, до его границ.
Примечание: Обрезка может повлиять на производительность рендеринга. Смотрите Обрезку для получения более подробной информации.
[с 5.11] containmentMask : QObject*
Это свойство содержит необязательную маску для элемента, используемого в методе QtQuick::Item::contains(). Его основное текущее использование — определить, попал ли событие указателя в элемент или нет.
По умолчанию метод contains возвращает true для любой точки внутри ограничивающей рамки элемента. containmentMask позволяет более точно управлять этим. Например, если используется подкласс пользовательского C++ QQuickItem со специализированным методом contains() в качестве containmentMask:
Item { id: item; containmentMask: AnotherItem { id: anotherItem } } Метод contains элемента item затем возвратит true только если реализация метода contains anotherItem вернёт true.
Фигура Shape может использоваться в качестве маски, чтобы элемент реагировал на события указателя только в непрямоугольной области:
|
|
Rectangle {
width: 90; height: 100
color: hoverHandler.hovered ? "wheat" : "lightgray"
containmentMask: shape
HoverHandler { id: hoverHandler }
Shape {
id: shape
containsMode: Shape.FillContains
ShapePath {
fillColor: "lightsteelblue"
startX: 10; startY: 20
PathArc {
x: 10; y: 80
radiusX: 40; radiusY: 40
useLargeArc: true
}
PathLine {
x: 10; y: 20
}
}
}
} |
Также возможно определить метод contains в QML. Например, для создания кругового элемента, который реагирует на события только внутри его границ:
|
|
Rectangle {
id: circle
width: 100; height: width
radius: width / 2
color: tapHandler.pressed ? "tomato" : hoverHandler.hovered ? "darkgray" : "lightgray"
TapHandler { id: tapHandler }
HoverHandler { id: hoverHandler }
containmentMask: QtObject {
property alias radius: circle.radius
function contains(point: point) : bool {
return (Math.pow(point.x - radius, 2) + Math.pow(point.y - radius, 2)) < Math.pow(radius, 2)
}
}
} |
Это свойство было введено в Qt 5.11.
См. также Примеры Qt Quick — Фигуры.
[по умолчанию] data : list<Object>
Свойство data позволяет свободно комбинировать визуальные дочерние элементы и ресурсы в элементе. Если вы присваиваете визуальный элемент списку данных, он становится дочерним элементом, а если присваиваете любой другой тип объекта, он добавляется как ресурс.
Так вы можете написать:
Item {
Text {}
Rectangle {}
Timer {}
} вместо:
Item {
children: [
Text {},
Rectangle {}
]
resources: [
Timer {}
]
} В целом, не должно быть необходимости ссылаться на свойство data, так как это свойство по умолчанию для Item, и все дочерние элементы автоматически назначаются этому свойству.
enabled : bool
Это свойство указывает, получает ли элемент события мыши и клавиатуры. По умолчанию это значение true.
Непосредственное изменение этого свойства влияет на значение enabled дочерних элементов. При установке в false, значения enabled всех дочерних элементов также становятся false. При установке в true, значения enabled дочерних элементов возвращаются к true, если они явно не были установлены в false.
Установка этого свойства в false автоматически приводит к установке activeFocus в false, и этот элемент больше не будет получать события клавиатуры.
См. также visible.
focus : bool
Это свойство указывает, имеет ли элемент фокус внутри содержащего FocusScope. Если true, этот элемент получит активный фокус при получении активного фокуса содержащим FocusScope.
В следующем примере, input получит активный фокус, когда scope получит активный фокус:
import QtQuick 2.0
Rectangle {
width: 100; height: 100
FocusScope {
id: scope
TextInput {
id: input
focus: true
}
}
} Для целей этого свойства вся сцена предполагается как область фокуса. На практике это означает, что следующий QML даст активный фокус элементу input при запуске.
Rectangle {
width: 100; height: 100
TextInput {
id: input
focus: true
}
} См. также activeFocus и Фокус клавиатуры в Qt Quick.
layer.effect : Component
Содержит эффект, применяемый к этому слою.
Эффект обычно является компонентом ShaderEffect, хотя может быть назначен любой компонент Item. Эффект должен иметь свойство текстуры-источника с именем, соответствующим layer.samplerName.
См. также layer.samplerName и Слои элементов.
layer.enabled : bool
Указывает, является ли элемент слоистым. Слоирование по умолчанию отключено.
Слоистый элемент рендерится на отдельной поверхности и кешируется до изменения. Включение слоирования для сложных иерархий QML элементов иногда может оптимизировать отрисовку.
Ни одно другое свойство слоя не имеет эффекта, когда слой отключен.
См. также Слои элементов.
layer.format : enumeration
Это свойство определяет внутренний формат текстуры. Изменение этого свойства имеет смысл, когда также указан 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 не поддерживают мипмапинг текстур, не являющихся степенями двойки.
См. также Слои элементов.
layer.samplerName : строка
Содержит имя свойства текстуры-источника эффекта.
Это значение должно совпадать с именем свойства текстуры-источника эффекта, чтобы элемент мог правильно передать внеэкранную поверхность слоя эффекту.
См. также layer.effect, ShaderEffect и Слои элементов.
[с 5.10] layer.samples : перечисление
Это свойство позволяет запрашивать многообразное отображение в слое.
По умолчанию многообразное отображение включено, когда многообразное отображение включено для всего окна, при условии, что используемый рендерер сцены и используемый графический API поддерживают это.
Установив значение 2, 4 и т. д., можно запросить многообразное отображение для части сцены без включения многообразного отображения для всей сцены. Таким образом, многообразное отображение применяется только к заданному поддереву, что может привести к значительному увеличению производительности, поскольку многообразное отображение не применяется к другим частям сцены.
Примечание: Включение многообразного отображения может быть потенциально дорогостоящим независимо от размера слоя, поскольку это влечёт за собой зависимые от аппаратного обеспечения и драйвера затраты на производительность и память.
Примечание: Это свойство функционально только при наличии поддержки многообразных буферов рендеринга и блинтов фреймбуфера. В противном случае значение игнорируется.
Это свойство было введено в Qt 5.10.
layer.smooth : булево
Указывает, будет ли слой плавно преобразован. При включении, выборка текстуры слоя выполняется с использованием linear интерполяции, а при выключении – с использованием режима фильтрации nearest.
По умолчанию это свойство установлено в false.
См. также Слои элементов.
layer.sourceRect : прямоугольник
Это свойство определяет прямоугольную область элемента, которая должна быть отображена в текстуре. Прямоугольник источника может быть больше самого элемента. Если прямоугольник равен null, что является значением по умолчанию, то весь элемент отображается в текстуре.
См. также Слои элементов.
[с 5.6] layer.textureMirroring : перечисление
Это свойство определяет, как должна быть отражена сгенерированная текстура. Значение по умолчанию – ShaderEffectSource.MirrorVertically. Настраиваемое отражение может быть полезно, если сгенерированная текстура напрямую используется пользовательскими шейдерами, такими как те, что определены в ShaderEffect. Если для слоёв элемента не указан эффект, отражение не влияет на представление элемента в интерфейсе пользователя.
- ShaderEffectSource.NoMirroring - Отсутствие отражения
- ShaderEffectSource.MirrorHorizontally - Сгенерированная текстура переворачивается по оси X.
- ShaderEffectSource.MirrorVertically - Сгенерированная текстура переворачивается по оси Y.
Это свойство было введено в Qt 5.6.
layer.textureSize : размер
Это свойство содержит запрашиваемый размер пикселей текстуры слоя. Если оно пустое, что является значением по умолчанию, используется размер элемента.
Примечание: На некоторых платформах есть ограничение на минимальный размер буферов фреймбуфера, что означает, что фактический размер текстуры может быть больше, чем запрашиваемый размер.
См. также Слои элементов.
layer.wrapMode : перечисление
Это свойство определяет режимы обёртания, связанные с текстурой. Изменение этого свойства имеет смысл, когда указан 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.
[с 6.0] palette : Palette
Это свойство содержит палитру, текущую для элемента.
Это свойство описывает запрошенную палитру элемента. Палитра используется стилем элемента при отрисовке всех элементов управления и доступна для обеспечения того, чтобы пользовательские элементы управления могли поддерживать согласованность с родным внешним видом и ощущением платформы. Часто разные платформы или разные стили определяют разные палитры для приложения.
Палитра по умолчанию зависит от системной среды. ApplicationWindow поддерживает системную/тематическую палитру, которая служит палитрой по умолчанию для всех элементов управления. Также могут быть специальные палитры по умолчанию для определённых типов элементов управления. Вы также можете установить палитру по умолчанию для элементов управления, либо:
- передав пользовательскую палитру в QGuiApplication::setPalette(), перед загрузкой любого QML; или
- указав цвета в файле qtquickcontrols2.conf.
Элементы передают явные свойства палитры от родительских к дочерним элементам. Если вы измените конкретное свойство в палитре элемента, это свойство передаётся всем дочерним элементам, перезаписывая любые системные значения по умолчанию для этого свойства.
Item {
palette {
buttonText: "maroon"
button: "lavender"
}
Button {
text: "Click Me"
}
} Это свойство было введено в Qt 6.0.
См. также Window::palette, Popup::palette, ColorGroup и Palette.
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
}
} |
См. также Transform и Rotation.
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 States.
Это свойство содержит список возможных состояний для этого элемента. Чтобы изменить состояние этого элемента, установите свойство 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 для получения более подробной информации об использовании состояний и переходов.
См. также transitions.
Это свойство содержит список преобразований, которые необходимо применить.
Для получения дополнительной информации см. Transform.
transformOrigin : перечисление
Это свойство содержит точку начала, относительно которой применяются преобразования масштабирования и поворота.
Доступно девять точек начала преобразования, как показано на изображении ниже. По умолчанию точка начала преобразования — Item.Center.
В этом примере изображение поворачивается вокруг нижнего правого угла.
Image {
source: "myimage.png"
transformOrigin: Item.BottomRight
rotation: 45
} Для задания произвольной точки начала преобразования используйте типы преобразований Scale или Rotation со свойством transform.
transitions : список<Transition>
Это свойство содержит список переходов для этого элемента. Они определяют переходы, которые должны применяться к элементу всякий раз, когда он меняет своё состояние state.
Это свойство задаётся как список объектов Transition. Например:
import QtQuick 2.0
Item {
transitions: [
Transition {
//...
},
Transition {
//...
}
]
} См. Qt Quick States и Анимация и переходы в Qt Quick для получения более подробной информации об использовании состояний и переходов.
См. также states.
visible : bool
Это свойство определяет, виден ли элемент. По умолчанию это значение равно true.
Непосредственное изменение этого свойства влияет на значение visible дочерних элементов. При установке в false значения visible всех дочерних элементов также становятся false. При установке в true значения visible дочерних элементов возвращаются к true, если они не были явно установлены в false.
(Из-за этого поведения использование свойства visible может не дать ожидаемого результата, если привязке свойства требуется реагировать только на явные изменения свойства. В таких случаях может быть лучше использовать свойство opacity вместо этого.)
Если это свойство установлено в false, элемент больше не будет получать события мыши, но будет продолжать получать события клавиатуры и сохранит фокус клавиатуры focus, если он был установлен. (В отличие от этого, установка свойства enabled в false останавливает как события мыши, так и клавиатуры, а также снимает фокус с элемента.)
Примечание: значение этого свойства изменяется только при изменении этого свойства или свойства visible родителя. Оно не изменяется, например, если этот элемент перемещается за пределы экрана или если opacity меняется на 0.
visibleChildren : список<Item>
Это свойство только для чтения, которое перечисляет всех дочерних элементов текущего элемента, которые в данный момент видны. Обратите внимание, что видимость дочернего элемента может измениться явным образом или из-за изменения видимости этого (его родительского) элемента или другого предка.
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, width, height), которые заданы в системе координат этого элемента, в систему координат item и возвращает точку или прямоугольник, соответствующие преобразованным координатам.
Для преобразования используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item имеет значение null, это преобразует точку или прямоугольник в систему координат корневого QML-представления.
Версии, принимающие точку и прямоугольник, доступны начиная с Qt 5.15.
Преобразует точку (x, y) или прямоугольник (x, y, width, height), которые заданы в системе координат item, в систему координат текущего элемента и возвращает точку или прямоугольник, соответствующие преобразованным координатам.
Для преобразования используются следующие свойства элемента: x, y, scale, rotation, transformOrigin и transform.
Если item имеет значение null, это преобразует точку или прямоугольник из системы координат корневого QML-представления.
Версии, принимающие точку и прямоугольник, доступны начиная с Qt 5.15.
childAt(вещественное x, вещественное y)
Возвращает первый видимый дочерний элемент, найденный в точке (x, y) в системе координат этого элемента.
Возвращает null, если такого элемента нет.
Возвращает true, если этот элемент содержит point, заданную в локальных координатах; возвращает false в противном случае. Это тот же проверка, что используется для проверки попадания QEventPoint во время доставки событий и зависит от containmentMask(), если она установлена.
[since 5.1] forceActiveFocus(Qt::FocusReason reason)
Это перегруженный метод.
Принудительно устанавливает активный фокус на элементе с заданным reason.
Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получают фокус.
Этот метод был представлен в Qt 5.1.
См. также activeFocus и Qt::FocusReason.
forceActiveFocus()
Принудительно устанавливает активный фокус на элемент.
Этот метод устанавливает фокус на элемент и гарантирует, что все предковые объекты FocusScope в иерархии объектов также получают фокус.
Причина изменения фокуса будет 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.
[since 5.7] точка mapFromGlobal(вещественное x, вещественное y)
Преобразует точку (x, y), которая находится в глобальной системе координат, в систему координат элемента и возвращает точку, соответствующую преобразованным координатам.
Для преобразования используются следующие свойства элемента: x, y, масштаб, поворот, оригинальная точка преобразования и преобразование.
Этот метод был представлен в Qt 5.7.
[since 5.7] точка mapToGlobal(вещественное x, вещественное y)
Преобразует точку (x, y), которая находится в системе координат этого элемента, в глобальную систему координат и возвращает точку, соответствующую преобразованным координатам.
Для преобразования используются следующие свойства элемента: x, y, масштаб, поворот, оригинальная точка преобразования и преобразование.
Этот метод был представлен в Qt 5.7.
[since 5.1] nextItemInFocusChain(bool 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-6.2/qml-qtquick-item.html