Тип QML ScrollBar
Взаимодействующая полоса прокрутки вертикального или горизонтального типа. Подробнее...
| Заявление импорта: | import QtQuick.Controls 2.5 |
| С момента: | 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 или свойств закрепления, например).
- Установите свойства size и position, чтобы определить размер и положение полосы прокрутки по отношению к элементу, который прокручивается.
- Установите свойство active, чтобы определить, когда полоса прокрутки будет отображаться.
См. также ScrollIndicator, Настройка ScrollBar и Управляющие элементы индикаторов.
Документация свойств
active : bool
Это свойство указывает, активна ли полоса прокрутки, т.е. когда она нажата или присоединённый Flickable находится в состоянии движения.
Можно поддерживать видимость обеих полос при прокрутке в любом направлении.
Это свойство автоматически устанавливается при прикреплении полосы прокрутки к flickable.
[только для чтения] horizontal : bool
Это свойство указывает, является ли полоса прокрутки горизонтальной.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также orientation.
interactive : bool
Это свойство указывает, интерактивна ли полоса прокрутки. Значение по умолчанию — true.
Неинтерактивная полоса прокрутки визуально и по поведению аналогична ScrollIndicator. Это свойство полезно для переключения между типичными интерфейсами на основе мыши и касания с интерактивными и неинтерактивными полосами прокрутки соответственно.
Это свойство было введено в 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/qt-5.13/qml-qtquick-controls2-scrollbar.html