Spec-Zone.ru › Qt 5.11

Тип QML ScrollBar

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

Оператор импорта: import QtQuick.Controls 2.4
С версии: 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 }
}

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

Горизонтальная и вертикальная полосы прокрутки по умолчанию не разделяют состояние 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.

[только для чтения] 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 : 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/archives/qt-5.11/qml-qtquick-controls2-scrollbar.html

Spec-Zone.ru

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