Spec-Zone.ru › Qt 5.12

Тип QML ScrollBar

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

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

Control

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

Свойства

  • 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

Методы

  • 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 }
}

Связывание активного состояния горизонтальных и вертикальных полос прокрутки

Горизонтальная и вертикальная полосы прокрутки по умолчанию не используют общее активное состояние. Для того, чтобы обе полосы оставались видимыми при прокрутке в любом направлении, установите двустороннюю привязку к активным состояниям, как показано в следующем примере:

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 : перечисление

Это свойство определяет ориентацию полосы прокрутки.

Возможные значения:

Константа Описание
Qt.Horizontal Горизонтальная
Qt.Vertical Вертикальная (по умолчанию)

Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к Flickable.

См. также horizontal и vertical.

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.

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 { }
}

См. также Прикрепление 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-5.12/qml-qtquick-controls2-scrollbar.html

Spec-Zone.ru

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