Тип QML ScrollBar
Вертикальная или горизонтальная интерактивная полоса прокрутки. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.1 |
| С тех пор: | 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 или anchors, например).
- Установите свойства size и position для определения размера и положения полосы прокрутки по отношению к прокручиваемому элементу.
- Установите свойство active для определения того, когда полоса прокрутки будет видимой.
См. также ScrollIndicator, Настройка ScrollBar и Контролы индикаторов.
Документация по свойствам
active : bool
Это свойство указывает, активна ли полоса прокрутки, т.е. когда она нажата или прикреплённый Flickable перемещается.
Возможна одновременная видимость горизонтальной и вертикальной полос прокрутки при прокрутке в любом направлении.
Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к flickable.
[только для чтения, начиная с QtQuick.Controls 2.3 (Qt 5.10)] horizontal : bool
Это свойство указывает, является ли полоса прокрутки горизонтальной.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также orientation.
[с QtQuick.Controls 2.2 (Qt 5.9)] interactive : bool
Это свойство указывает, является ли полоса прокрутки интерактивной. Значение по умолчанию — true.
Неинтерактивная полоса прокрутки визуально и поведению аналогична ScrollIndicator. Это свойство полезно для переключения между типичными пользовательскими интерфейсами, ориентированными на мышь и сенсорное управление, с интерактивными и неинтерактивными полосами прокрутки соответственно.
Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).
[с QtQuick.Controls 2.4 (Qt 5.11)] minimumSize : real
Это свойство содержит минимальный размер полосы прокрутки, масштабированный к 0.0 - 1.0.
Это свойство было введено в QtQuick.Controls 2.4 (Qt 5.11).
См. также size, visualSize и visualPosition.
orientation : перечисление
Это свойство содержит направление полосы прокрутки.
Возможные значения:
| Постоянная | Описание |
|---|---|
Qt.Horizontal |
Горизонтально |
Qt.Vertical |
Вертикально (по умолчанию) |
Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к flickable.
См. также horizontal и vertical.
[с QtQuick.Controls 2.2 (Qt 5.9)] policy : перечисление
Это свойство содержит политику полосы прокрутки. Политика по умолчанию — 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.
[since QtQuick.Controls 2.2 (Qt 5.9)] 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().
[только для чтения, начиная с QtQuick.Controls 2.3 (Qt 5.10)] vertical : bool
Это свойство содержит значение, указывающее, является ли полоса прокрутки вертикальной.
Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).
См. также orientation.
[начиная с QtQuick.Controls 2.4 (Qt 5.11)] visualPosition : real
Это свойство содержит эффективное визуальное положение полосы прокрутки, которое может быть ограничено минимальным размером.
Это свойство было добавлено в QtQuick.Controls 2.4 (Qt 5.11).
См. также position и minimumSize.
[начиная с QtQuick.Controls 2.4 (Qt 5.11)] 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-6.1/qml-qtquick-controls2-scrollbar.html