Тип QML ScrollBar
Вертикальная или горизонтальная интерактивная полоса прокрутки. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.2 |
| С момента: | Qt 5.7 |
| Наследует: |
Свойства
- active : bool
- interactive : bool
- orientation : перечисление
- policy : перечисление
- position : вещественное число
- pressed : bool
- size : вещественное число
- snapMode : перечисление
- stepSize : вещественное число
Прикреплённые свойства
- horizontal : ScrollBar
- vertical : ScrollBar
Методы
Подробное описание
ScrollBar — это интерактивная полоса, которую можно использовать для прокрутки до определённой позиции. Полоса прокрутки может быть как вертикальной, так и горизонтальной и может быть прикреплена к любому элементу Flickable, такому как ListView и GridView.
Flickable {
// ...
ScrollBar.vertical: ScrollBar { }
} Прикрепление ScrollBar к Flickable
При прикреплении ScrollBar вертикально или горизонтально к Flickable, его геометрия и следующие свойства автоматически устанавливаются и обновляются:
Прикреплённый ScrollBar перенаследует родительский элемент от целевого Flickable. Вертикально прикреплённый ScrollBar изменяет свой размер на высоту Flickable и позиционирует себя по бокам от него, основываясь на направлении макета. Горизонтально прикреплённый ScrollBar изменяет свой размер на ширину Flickable и позиционирует себя снизу. Автоматическое управление геометрией можно отключить, указав другому элементу родителя прикреплённый ScrollBar. Это может быть полезно, например, если ScrollBar должен быть размещён за пределами ограничивающего Flickable. Это показано в следующем примере:
Flickable {
id: flickable
clip: true
// ...
ScrollBar.vertical: ScrollBar {
parent: flickable.parent
anchors.top: flickable.top
anchors.left: flickable.right
anchors.bottom: flickable.bottom
}
} Обратите внимание, что ScrollBar не фильтрует события клавиш Flickable, к которому он прикреплен. Следующий пример иллюстрирует, как реализовать прокрутку с помощью клавиш вверх и вниз:
Flickable {
focus: true
Keys.onUpPressed: scrollBar.decrease()
Keys.onDownPressed: scrollBar.increase()
ScrollBar.vertical: ScrollBar { id: scrollBar }
} Связывание активного состояния горизонтальных и вертикальных полос прокрутки
Горизонтальные и вертикальные полосы прокрутки по умолчанию не совместно используют состояние active. Чтобы отображать обе полосы при прокрутке в любом направлении, установите двустороннюю связь между состояниями активных элементов, как показано в следующем примере:
Flickable {
anchors.fill: parent
contentWidth: parent.width * 2
contentHeight: parent.height * 2
ScrollBar.horizontal: ScrollBar { id: hbar; active: vbar.active }
ScrollBar.vertical: ScrollBar { id: vbar; active: hbar.active }
} Неприкреплённые полосы прокрутки
Можно создать экземпляр ScrollBar без использования API прикреплённых свойств. Это полезно, когда поведение прикреплённой полосы прокрутки недостаточно или Flickable не используется. В следующем примере горизонтальные и вертикальные полосы прокрутки используются для прокрутки текста без использования Flickable:
Rectangle {
id: frame
clip: true
width: 160
height: 160
border.color: "black"
anchors.centerIn: parent
Text {
id: content
text: "ABC"
font.pixelSize: 160
x: -hbar.position * width
y: -vbar.position * height
}
ScrollBar {
id: vbar
hoverEnabled: true
active: hovered || pressed
orientation: Qt.Vertical
size: frame.height / content.height
anchors.top: parent.top
anchors.right: parent.right
anchors.bottom: parent.bottom
}
ScrollBar {
id: hbar
hoverEnabled: true
active: hovered || pressed
orientation: Qt.Horizontal
size: frame.width / content.width
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
}
} При использовании неприкреплённой ScrollBar, необходимо сделать следующее вручную:
- Разместить полосу прокрутки (с помощью свойств x и y или anchor, например).
- Установить свойства size и position для определения размера и позиции полосы прокрутки относительно прокручиваемого элемента.
- Установить свойство active для определения, когда будет отображаться полоса прокрутки.
См. также ScrollIndicator, Настройка ScrollBar и Индикаторы управления.
Документация свойств
active : bool
Это свойство указывает, активна ли полоса прокрутки, т. е. если она нажата или прикреплённый Flickable находится в движении.
Можно отображать обе горизонтальную и вертикальную полосы прокрутки при прокрутке в любом направлении.
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к элементу flickable.
interactive : bool
Это свойство указывает, интерактивна ли полоса прокрутки. Значение по умолчанию — true.
Неинтерактивная полоса прокрутки визуально и по поведению похожа на ScrollIndicator. Это свойство полезно для переключения между типичными интерфейсами для мыши и сенсорного управления с интерактивными и неинтерактивными полосами прокрутки соответственно.
Это свойство QML было введено в QtQuick.Controls 2.2 (Qt 5.9).
orientation : перечисление
Это свойство содержит ориентацию полосы прокрутки.
Возможные значения:
| Постоянная | Описание |
|---|---|
Qt.Horizontal |
Горизонтальная |
Qt.Vertical |
Вертикальная (по умолчанию) |
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к элементу flickable.
policy : перечисление
Это свойство определяет политику полосы прокрутки. По умолчанию политика — ScrollBar.AsNeeded.
Возможные значения:
| Постоянная | Описание |
|---|---|
ScrollBar.AsNeeded |
Полоса прокрутки отображается только тогда, когда контент слишком большой, чтобы поместиться. |
ScrollBar.AlwaysOff |
Полоса прокрутки никогда не отображается. |
ScrollBar.AlwaysOn |
Полоса прокрутки всегда отображается. |
Следующий пример отображает вертикальную полосу прокрутки всегда:
Flickable {
contentHeight: 2000
ScrollBar.vertical: ScrollBar {
policy: ScrollBar.AlwaysOn
}
} Это свойство QML было введено в QtQuick.Controls 2.2 (Qt 5.9).
position : вещественное число
Это свойство содержит позицию полосы прокрутки, масштабированную до 0.0 - 1.0.
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к элементу flickable.
См. также Flickable::visibleArea.
pressed : bool
Это свойство указывает, нажата ли полоса прокрутки.
size : вещественное число
Это свойство содержит размер полосы прокрутки, масштабированный до 0.0 - 1.0.
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к элементу flickable.
См. также Flickable::visibleArea.
snapMode : перечисление
Это свойство содержит режим привязки.
Возможные значения:
| Постоянная | Описание |
|---|---|
ScrollBar.NoSnap |
Полоса прокрутки не «прилипает» (по умолчанию). |
ScrollBar.SnapAlways |
Полоса прокрутки «прилипает» во время перетаскивания. |
ScrollBar.SnapOnRelease |
Полоса прокрутки не «прилипает» во время перетаскивания, но только после отпускания. |
В следующей таблице различные режимы проиллюстрированы с помощью анимаций. Движение и шаг (0.25) идентичны в каждой анимации.
| Значение | Пример |
ScrollBar.NoSnap |
|
ScrollBar.SnapAlways |
|
ScrollBar.SnapOnRelease |
|
Это свойство QML было введено в QtQuick.Controls 2.2 (Qt 5.9).
См. также шаг.
stepSize : real
Это свойство содержит размер шага. Значение по умолчанию равно 0.0.
См. также snapMode, increase() и decrease().
Документация по присоединённому свойству
ScrollBar.horizontal : ScrollBar
Это свойство прикрепляет горизонтальную полосу прокрутки к Flickable.
Flickable {
contentWidth: 2000
ScrollBar.horizontal: ScrollBar { }
} См. также Прикрепление ScrollBar к Flickable.
ScrollBar.vertical : ScrollBar
Это свойство прикрепляет вертикальную полосу прокрутки к Flickable.
Flickable {
contentHeight: 2000
ScrollBar.vertical: ScrollBar { }
} См. также Прикрепление ScrollBar к Flickable.
Документация по методам
void decrease()
Уменьшает позицию на шаг или 0.1 если шаг равен 0.0.
См. также шаг.
void increase()
Увеличивает позицию на шаг или 0.1 если шаг равен 0.0.
См. также шаг.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qml-qtquick-controls2-scrollbar.html