Тип QML ScrollBar
Вертикальная или горизонтальная интерактивная полоса прокрутки. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.0 |
| С момента: | 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. Для того, чтобы обе полосы оставались видимыми при прокрутке в любом направлении, установите двустороннее связывание между состояниями 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 { }
} См. также Прикрепление ScrollBar к Flickable.
ScrollBar.vertical : ScrollBar
Это свойство прикрепляет вертикальный ползунок к Flickable.
Flickable {
contentHeight: 2000
ScrollBar.vertical: ScrollBar { }
} См. также Прикрепление 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.0/qml-qtquick-controls2-scrollbar.html