Spec-Zone.ru › Qt 5.9

Тип QML ScrollBar

Вертикальная или горизонтальная интерактивная полоса прокрутки. Подробнее...

Заявление об импорте: import QtQuick.Controls 2.2
С момента: Qt 5.7
Наследует:

Control

  • Список всех членов, включая унаследованные

Свойства

  • active : bool
  • interactive : bool
  • orientation : перечисление
  • policy : перечисление
  • position : вещественное число
  • pressed : bool
  • size : вещественное число
  • snapMode : перечисление
  • stepSize : вещественное число

Прикреплённые свойства

  • horizontal : ScrollBar
  • vertical : ScrollBar

Методы

  • void decrease()
  • void increase()

Подробное описание

ScrollBar — это интерактивная полоса, которую можно использовать для прокрутки до определённой позиции. Полоса прокрутки может быть как вертикальной, так и горизонтальной и может быть прикреплена к любому элементу Flickable, такому как ListView и GridView.

Flickable {
    // ...
    ScrollBar.vertical: ScrollBar { }
}

Прикрепление ScrollBar к Flickable

При прикреплении ScrollBar вертикально или горизонтально к Flickable, его геометрия и следующие свойства автоматически устанавливаются и обновляются:

  • orientation
  • position
  • size
  • active

Прикреплённый 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API