Тип QML ScrollBar
Вертикальная или горизонтальная интерактивная полоса прокрутки. Подробнее...
| Оператор импорта: | import QtQuick.Controls 2.4 |
| С версии: | Qt 5.7 |
| Наследует: |
Свойства
- active : bool
- horizontal : bool
- interactive : bool
- minimumSize : real
- orientation : перечисление
- policy : перечисление
- position : real
- pressed : bool
- size : real
- snapMode : перечисление
- stepSize : real
- vertical : bool
- visualPosition : real
- visualSize : real
Присоединенные свойства
- 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.
[только для чтения] horizontal : bool
Это свойство указывает, горизонтальна ли полоса прокрутки.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также orientation.
interactive : bool
Это свойство указывает, интерактивна ли полоса прокрутки. Значение по умолчанию — true.
Неинтерактивная полоса прокрутки визуально и по поведению похожа на ScrollIndicator. Это свойство полезно для переключения между типичными UI, ориентированными на мышь и сенсорное управление, с интерактивными и неинтерактивными полосами прокрутки соответственно.
Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).
minimumSize : real
Это свойство задаёт минимальный размер полосы прокрутки, масштабированный до 0.0 - 1.0.
Это свойство было введено в QtQuick.Controls 2.4 (Qt 5.11).
См. также size, visualSize и visualPosition.
orientation : enumeration
Это свойство задаёт ориентацию полосы прокрутки.
Возможные значения:
| Постоянная | Описание |
|---|---|
Qt.Horizontal |
Горизонтальная |
Qt.Vertical |
Вертикальная (по умолчанию) |
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к Flickable.
См. также horizontal и vertical.
policy : enumeration
Это свойство задаёт политику полосы прокрутки. По умолчанию используется политика ScrollBar.AsNeeded.
Возможные значения:
| Постоянная | Описание |
|---|---|
ScrollBar.AsNeeded |
Полоса прокрутки отображается только если содержимое слишком велико, чтобы уместиться. |
ScrollBar.AlwaysOff |
Полоса прокрутки никогда не отображается. |
ScrollBar.AlwaysOn |
Полоса прокрутки всегда отображается. |
В следующем примере вертикальная полоса прокрутки всегда остается видимой:
Flickable {
contentHeight: 2000
ScrollBar.vertical: ScrollBar {
policy: ScrollBar.AlwaysOn
}
} Этот свойство был введен в QtQuick.Controls 2.2 (Qt 5.9).
position : real
Это свойство содержит положение полосы прокрутки, масштабированное к 0.0 - 1.0.
Это свойство автоматически устанавливается, когда полоса прокрутки присоединена к flickable.
См. также Flickable::visibleArea и visualPosition.
pressed : bool
Это свойство содержит значение, указывающее, нажата ли полоса прокрутки.
size : real
Это свойство содержит размер полосы прокрутки, масштабированный к 0.0 - 1.0.
Это свойство автоматически устанавливается, когда полоса прокрутки присоединена к flickable.
См. также Flickable::visibleArea, minimumSize и visualSize.
snapMode : enumeration
Это свойство содержит режим привязки.
Возможные значения:
| Постоянная | Описание |
|---|---|
ScrollBar.NoSnap |
Полоса прокрутки не привязывается (по умолчанию). |
ScrollBar.SnapAlways |
Полоса прокрутки привязывается во время перетаскивания. |
ScrollBar.SnapOnRelease |
Полоса прокрутки не привязывается во время перетаскивания, но только после отпускания. |
В следующей таблице различные режимы проиллюстрированы с помощью анимаций. Движение и stepSize (0.25) идентичны в каждой анимации.
| Значение | Пример |
ScrollBar.NoSnap |
|
ScrollBar.SnapAlways |
|
ScrollBar.SnapOnRelease |
|
Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).
См. также stepSize.
stepSize : real
Это свойство содержит размер шага. Значение по умолчанию — 0.0.
См. также snapMode, increase() и decrease().
[только для чтения] vertical : bool
Это свойство содержит значение, указывающее, является ли полоса прокрутки вертикальной.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также orientation.
visualPosition : real
Это свойство содержит эффективное визуальное положение полосы прокрутки, которое может быть ограничено минимальным размером.
Это свойство было введено в QtQuick.Controls 2.4 (Qt 5.11).
См. также position и minimumSize.
visualSize : real
Это свойство содержит эффективный визуальный размер полосы прокрутки, который может быть ограничен минимальным размером.
Это свойство было введено в QtQuick.Controls 2.4 (Qt 5.11).
См. также size и minimumSize.
Документация по присоединенным свойствам
ScrollBar.horizontal : ScrollBar
Это свойство присоединяет горизонтальную полосу прокрутки к Flickable.
Flickable {
contentWidth: 2000
ScrollBar.horizontal: ScrollBar { }
} См. также Присоединение полосы прокрутки к Flickable.
ScrollBar.vertical : ScrollBar
Это свойство присоединяет вертикальную полосу прокрутки к Flickable.
Flickable {
contentHeight: 2000
ScrollBar.vertical: ScrollBar { }
} См. также Присоединение полосы прокрутки к Flickable.
Документация по методам
void decrease()
Уменьшает положение на stepSize или 0.1 , если stepSize — 0.0.
См. также stepSize.
void increase()
Увеличивает положение на stepSize или 0.1 , если stepSize — 0.0.
См. также stepSize.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtquick-controls2-scrollbar.html